php5調用外部C庫,解決思路

來源:互聯網
上載者: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 擴充的約定了吧
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.