C ++头文件包含

时间:2013-03-14 10:10:07

标签: php g++ php-extension

我是编码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/

的多个子目录中的许多文件

1 个答案:

答案 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创建包装器代码?你应该试试。