Maison > développement back-end > tutoriel php > 用PHP写扩展来调用C语言函数接口有关问题

用PHP写扩展来调用C语言函数接口有关问题

WBOY
Libérer: 2016-06-13 09:58:37
original
1048 Les gens l'ont consulté

用PHP写扩展来调用C语言函数接口问题
有没有人研究过用PHP写扩展来调用C语言函数接口?
我现在有个C语言函数接口,编译成.so文件。现在前台要调用这个C语言的接口,我网上查了下,要写PHP扩展,用PHP包装C接口成扩展模块。我测试过包装不带参数和带整型参数的C函数,可以让PHP调用成功,但是对于那些带指针参数的C函数,包装写成扩展之后,却调用不成功。一直不明白原因出在哪里。我的代码如下,请高人指教。
C函数:(最后编译成libtest.so文件)
char * test(char *arg)
{
  return arg;
}

写一个PHP模块 phptest:
再phptest.c文件里代码如下:
155 PHP_FUNCTION(test)
156 {
158 char *arg;
159 int arg_len;
160 char *result;
161 // int result_len;
162 
163 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
164 return;
165 }
166 result = (char *)emalloc(50);
167 
168 result =memcpy(result,test(arg),50);
169 // result = "hello abc";
170 RETURN_STRING(result,1);
171 }


------解决方案--------------------
最近在研究C,关注下
------解决方案--------------------

探讨
有没有人研究过用PHP写扩展来调用C语言函数接口?
我现在有个C语言函数接口,编译成.so文件。现在前台要调用这个C语言的接口,我网上查了下,要写PHP扩展,用PHP包装C接口成扩展模块。我测试过包装不带参数和带整型参数的C函数,可以让PHP调用成功,但是对于那些带指针参数的C函数,包装写成扩展之后,却调用不成功。一直不明白原因出在哪里。我的代码如下,请高人指教。
C函数:(最后编译成libt……
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal