Я создал файл .so для следующей функции:
main.cpp:
#include<stdio.h> #include "test.h" int main() { int a=hello(); printf("%d",a); return 0; }
test.h
int test() { int a=5,b=10,c; printf("Hi"); c=a+b; return c; }
Теперь я создаю файл общей библиотеки main.so для вышеуказанной программы и хочу вызвать функцию hell () из php-скрипта.
p1.php
<?php // Call to test function in main.cpp >
Я видел различные учебные пособия в Интернете, но не дал ясного объяснения. Может ли кто-нибудь дать ссылку на какой-то учебник или помочь мне в этом вопросе?
Книга Сары Големан – отличное, полное освещение того, как разрабатывать расширения PHP (включая вашу тему).
Вот вступительная статья.
http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/
Я прочитал ее книгу, и она полностью охватывает этот вопрос.
http://www.amazon.com/dp/067232704X
Прошу прощения, если это не быстрый и легкий ответ. Однако API PHP не совсем прямолинейный. Это не имело никакого смысла без дополнительной справочной информации по каждому из компонентов. Как только у меня это получилось, я смог четко увидеть разработку PHP API.
В качестве альтернативы, если вы ищете другой подход, использование RabbitMQ или другой службы очереди сообщений может быть желательным для вызова приложения c ++ и отправки сообщений назад и вперед из (необязательно) постоянного процесса c ++.
Вот некоторые дополнительные ссылки, которые я нашел полезными:
http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/
http://talks.somabo.de/200903_montreal_php_extension_writing.pdf
http://simonholywell.com/post/2010/09/15-excellent-resources-for-php-extension-development.html
http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html