欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php5调用外部C库,解决思路

程序员文章站 2024-04-05 15:12:12
...
php5调用外部C库,急!
---------外部c函数 hello.c----------
#include
#include
#include
#include
#include
int hello_cc(char * dbg)
{
syslog(LOG_DEBUG, "hello_cc %s\n", dbg);
if(dbg==NULL) return -1;
if(strlen(dbg)>1024) return -1;
printf("%s\n", dbg);
syslog(LOG_DEBUG, "hello_CC return\n");
return 0;
}
---------php5扩展函数 hello.c-----------
const zend_function_entry hello_functions[] = {
PHP_FE(confirm_hello_compiled, NULL) /* For testing, remove later. */
PHP_FE(hello, NULL)
PHP_FE_END /* Must be the last line in hello_functions[] */
};
PHP_FUNCTION(confirm_hello_compiled)
{
char *arg = NULL;
int arg_len, len;
char *strg;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
return;
}

len = spprintf(&strg, 0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "hello", arg$
RETURN_STRINGL(strg, len, 0);
}
PHP_FUNCTION(hello){
char *dbg = NULL;
int dbg_len, len;
int result;

if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &dbg, &dbg_len) == FAILURE){
return;
}
res_cc = hello_cc(dbg);
RETURN_LONG(res_cc);
}
------------php5 调用-------------
if (!extension_loaded("hello")) {
print "skip";
} else {
//dl('hello.so'); //php5中dl()被屏蔽,直接在php.ini中添加hello.so
echo hello("ssssssssqqqqqqqqqqqq");
}

//输出-->> 空白页,估计崩掉了。
求解正确的 PHP_FUNCTION(hello) ,急用!!!

------解决方案--------------------
如果 hello_cc 定义没有错误的话,放在一起编译就可以了

不过你在 hello_cc 中直接 printf 似违反了 php 扩展的约定了吧
php5调用外部C库,解决思路

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频