我是编码PHP扩展的新手。我正在尝试.cpp文件中的以下片段
#include <iostream>
#include "Zend/zend.h"
using namespace std;
void describe_zval(zval *foo)
{
if (foo->type == IS_NULL)
{
php_printf("The variable is NULL");
}
else
{
php_printf("The variable is of type %d", foo->type);
}
}
int main(void)
{
return 0;
}
zval
/usr/local/src/php-5.4.11/Zend/zend.h
(结构)
编译
g++ -I /usr/local/src/php-5.4.11 -I /usr/local/src/php-5.4.11/Zend try.cpp
这给出了错误
In file included from /usr/local/src/php-5.4.11/Zend/zend_alloc.h:27:0,
from /usr/local/src/php-5.4.11/Zend/zend.h:237,
from try.c:2:
/usr/local/src/php-5.4.11/Zend/../TSRM/TSRM.h:20:26: fatal error: tsrm_config.h: No such file or directory
compilation terminated.
tsrm_config.h出现在/usr/local/src/php-5.4.11/
如何在/usr/local/src/php-5.4.11/
下包含子目录,因为编译过程需要位于/usr/local/src/php-5.4.11/
答案 0 :(得分:1)
在php-5.4.11目录中,您还应该包含Zend,main,TSRM(如果您想在线程安全的服务器上开发扩展)。我的意思是你应该:-I /usr/local/src/php-5.4.11/main
I /usr/local/src/php-5.4.11/Zend
I /usr/local/src/php-5.4.11/TSRM
,你可以创建一个包含这些目录的makefile。顺便问一下,为什么不使用SWIG创建包装器代码?你应该试试。