php5調用外部C庫,解決思路
最後更新:2016-06-13
來源:互聯網
上載者:User
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 擴充的約定了吧