如何使用php脚本从.so文件中调用函数?

时间:2013-06-28 03:28:56

标签: php c++ php-extension

我创建了以下函数的.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,并希望从php脚本中调用hell()函数。

p1.php

<?php
// Call to test function in main.cpp
>

我在网上看过各种教程,但没有明确的解释。有人可以链接到一些教程或帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

Sara Goleman的书非常详尽地介绍了如何开发php扩展(包括你的主题)。

这是一篇介绍性文章。

http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/

我读过她的书,完全涵盖了这个问题。

http://www.amazon.com/dp/067232704X

如果这不是一个快速简单的答案,我很抱歉。但是,PHP API并不完全是直截了当的。没有关于每个组件的进一步背景信息,它就没有意义。有了这个,我就能清楚地看到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

http://www.php.net/manual/en/internals2.php