例子是照着网上写的,虽然比较简单,还是内容粘贴起来还是有点太多,我把地址贴一下
http://tech.idv2.com/2007/07/06/use-local-so-in-php/
使用php调用hello_add()没有问题。
现在我修改了hello_add函数:int hello_none()
{
return 0;
}int hello_add(int a, int b)
{
hello_none(); return a + b;
}再使用php调用hello_add就出现了问题: PHP Fatal error: Call to undefined function hello_add().....这是什么原因呢??
PHP_FUNCTION(hello_add)
{
long int a, b;
long int result; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {
return;
} result = hello_add(a, b); RETURN_LONG(result);
}里面没有hello_none()函数
{
...
}int hello_add_2()
{
...
}int hello_add(a, b)
{
hello_add_1();
hello_add_2(); return 0;
}这时候,当hello_add调用其他函数的时候,就会出现问题当时我是在这个函数中使用了strlen,不明白为啥不能调用strlen,后来写了个hello_none函数,如果调用,就会出错。
如果要使用,那么你应该将strlen的C代码包含进来
#include <string.h>
int hello_add(a, b)
{
hello_add_1();
hello_add_2();
return 0; //这里貌似不能这么写吧,看看规范的C函数是怎么写的
RETURN_LONG(result);
}
{
return a + b;
}我是直接返回0了,没有做加法处理int hello_add(int a, int b)
{
// 其他处理,例如hello_add_1()...
return 0;
}RETURN_LONG(result); 是php扩展里面的,我写的这个函数是c的动态库中的
{
return 0;
}int b()
{
return a();
}
函数a肯定是先定义的,然后函数b才会调用
使用phpinfo()或是print_r(get_loaded_extensions());或是print_r(get_extension_funcs("hello"));