php5调用外部C库,急!
--------外部c関数数 hello.c----------
#include
#include
#include
#include
#include
int hello_cc(char * dbg )
{
syslog(LOG_DEBUG, "hello_cc %sn", dbg);
if(dbg==NULL) return -1;
if(strlen(dbg)>1024) return - 1;
printf("%sn", dbg);
syslog(LOG_DEBUG, "hello_CC returnn");
return 0;
}
-------- php5扩展関数 hello.c----------
const zend_function_entry hello_functions[] = {
PHP_FE(confirm_hello_compiled, NULL) /* テストのため、後で削除します。 */
PHP_FE(hello, NULL)
PHP_FE_END /* 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, "おめでとうございます! ext/%.78s/config.m4 が正常に変更されました。モジュール %.78s が PHP にコンパイルされました。", "こんにちは", 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 展的约定了吧