• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-24) 18次浏览 已收录 0个评论

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;
pri2本文来源gaodaima#com搞(代@码$网6

搞gaodaima代码

ntf(“%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 扩展的约定了吧


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php5调用外部C库,解决思路

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址