在C中创建PHP扩展

时间:2013-08-07 06:52:18

标签: php c visual-studio-2010 php-extension

我对在C代码中创建PHP扩展感到震惊。我已经提到了链接,并按照他们给出的步骤进行了说明:

http://netindonesia.net/blogs/risman/archive/2008/06/15/part-2-writing-php-extension

http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/

我仍然遇到了创建扩展程序的问题。

我在Windows 7和Visual Studio 2010 Professional中使用XAMPP和PHP版本5.4.16来创建和编译C ++代码。

我正在使用以下C ++代码:

 #include "stdio.h"
 #include "stdafx.h"
 /* declaration of functions to be exported */
 ZEND_FUNCTION(DoubleUp);

/* compiled function list so Zend knows what's in this module */
zend_function_entry FirstPHPExtModule_functions[] = {
     ZEND_FE(DoubleUp, NULL)
     {NULL, NULL, NULL}
};

/* compiled module information */
zend_module_entry FirstPHPExtModule_module_entry = {
     STANDARD_MODULE_HEADER,
     "FirstPHPExt Module",
     FirstPHPExtModule_functions,
     NULL, NULL, NULL, NULL, NULL,
     NO_VERSION_YET, STANDARD_MODULE_PROPERTIES
};

/* implement standard "stub" routine to introduce ourselves to Zend */
ZEND_GET_MODULE(FirstPHPExtModule)

/* DoubleUp function */
/* This method takes 1 parameter, a long value, returns the value multiplied by 2 */
ZEND_FUNCTION(DoubleUp){
   long paramValue = 0;
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &paramValue) == FAILURE) {
       RETURN_STRING("Bad parameters!", true);
   }
   paramValue *= 2;
   RETURN_LONG(paramValue);
}

但是,我得到了如下错误:

 1>php_myclass.cpp(16): error C2065: 'ZEND_DEBUG' : undeclared identifier
 1>
 1>Build FAILED. 

请帮我在Windows 7环境中创建PHP扩展。

1 个答案:

答案 0 :(得分:0)

在项目中定义ZEND_DEBUG=0定义,或根据您使用的内容项目属性。或者,在stdafx.h中,设置

#ifndef ZEND_DEBUG
#define ZEND_DEBUG 0
#endif

如果您使用的是visual studio

#ifdef _DEBUG
#define ZEND_DEBUG 1
#else
#define ZEND_DEBUG 0
#endif

因此,如果你构建在调试模式下,那么zend调试代码就会生成,并且在发行版中构建会删除所有的zend调试代码。

注意:请确保您的项目中还定义了ZTS=1ZEND_WIN32PHP_WIN32

按照本指南设置使用visual studio visual studio build guide构建php扩展的正确环境。它适用于VC2005,但它或多或少是相同的过程。