C++头文件包含
问题描述:
我是编码PHP扩展的新手。和我试着在.cpp文件下面的代码片断C++头文件包含
#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/
答
在php-5.4.11目录几个子目录许多文件,你还应该包括Zend的,主要的,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创建包装代码?你应该尝试一下。
好吧,通过添加它作为一个库/在g ++中包含thingy将definatly帮助:'-I:设置包含文件的路径。 | -L:设置库的路径 – Najzero 2013-03-14 10:14:34