ホームページ > バックエンド開発 > PHPチュートリアル > php5 が外部 C ライブラリを呼び出す、解決策のアイデア

php5 が外部 C ライブラリを呼び出す、解決策のアイデア

WBOY
リリース: 2016-06-13 13:48:09
オリジナル
1039 人が閲覧しました

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 展的约定了吧

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート