由于本人是写C的所以对这个事情不是很了解,首先说明一下是程序在linux下,php的版本是5.3.13,我用C写的一个简单的加法运算的php扩展是可以使用的,我想问题就出在没有正确的链接进C的库
C库为两种类型:
1.是linux系统本身就自带的,但是需要在gcc编译可执行文件的时候用-l去链接,比如C的线程库 -lpthread2.是第三方的,比如我现在有一个C的.so动态链接库libdecode.so,提供了一个C的API函数long SetCode(long l_input);我改写的供php调用的函数是这么写的PHP_FUNCTION(php_setcode)
{
long arg_1 = 0;
long re = 0;
if(zend_parse_parameter(ZEND_NUM_ARGS() TSRMLS_CC, "l", &arg_1) == FAILURE)
{
return;
}
re = SetCode(arg_1);
}config.m4里添加了PHP_ADD_LIBRARY_WITH_PATH(decode, /home/wzb/lib, TEST_SHARED_LIBADD)
PHP_ADD_INCLUDE(/home/wzb/include)执行命令
./congfigure --with-php-config=/usr/local/php/bin/php-config
make
并把生成的test.so和C的第三方库libdecode.so都复制到了/usr/local/php/lib/php/extension/no-debug-non-zts-20090626下
现在我在php.ini已经添加了如下的语句
extension=test.so
extension=libdecode.so最后在php里无法成功调用php_setcode的函数请教上述步骤我哪里需要补充才能实现对php_setcode的调用
C库为两种类型:
1.是linux系统本身就自带的,但是需要在gcc编译可执行文件的时候用-l去链接,比如C的线程库 -lpthread2.是第三方的,比如我现在有一个C的.so动态链接库libdecode.so,提供了一个C的API函数long SetCode(long l_input);我改写的供php调用的函数是这么写的PHP_FUNCTION(php_setcode)
{
long arg_1 = 0;
long re = 0;
if(zend_parse_parameter(ZEND_NUM_ARGS() TSRMLS_CC, "l", &arg_1) == FAILURE)
{
return;
}
re = SetCode(arg_1);
}config.m4里添加了PHP_ADD_LIBRARY_WITH_PATH(decode, /home/wzb/lib, TEST_SHARED_LIBADD)
PHP_ADD_INCLUDE(/home/wzb/include)执行命令
./congfigure --with-php-config=/usr/local/php/bin/php-config
make
并把生成的test.so和C的第三方库libdecode.so都复制到了/usr/local/php/lib/php/extension/no-debug-non-zts-20090626下
现在我在php.ini已经添加了如下的语句
extension=test.so
extension=libdecode.so最后在php里无法成功调用php_setcode的函数请教上述步骤我哪里需要补充才能实现对php_setcode的调用
若是前者:http://blog.csdn.net/franzhong/article/details/7265429
这不是 php 的问题,请到 C/C++ 版面求解,那里高人很多
make clean#添加模块ncdocxml
./configure --with-php-config=/usr/nc-home/php5/bin/php-config --enable-ncdocxml#编译模块ncdocxml
make LDFLAGS=-lncdocxml
还是非常感谢你的热心帮助
vi config.m4
再config.m4中添加
PHP_ADD_LIBRARY_WITH_PATH(decode, /home/wzb/lib, TEST_SHARED_LIBADD)
PHP_ADD_INCLUDE(/home/wzb/include)
PHP_SUBST(TEST_SHARED_LIBADD)然后依次执行命令
phpize
./configure --enable-test --with-php-config=/usr/local/php/bin/php-config
make最后在modules得到的PHP的扩展库test.so,可以实现对libdecode.so的C的API函数的调用