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

WBOY
Freigeben: 2016-06-13 10:09:09
Original
906 Leute haben es durchsucht

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage