2010-09-04 116 views
3

符合使用使用VC9(2008年)和VC10(2010)的下一步骤编译我自己的PHP扩展后:编译PHP扩展与Visual Studio 2008,MODULE ID不使用PHP

http://blog.slickedit.com/2007/09/creating-a-php-5-extension-with-visual-c-2005/

初始化PHP时,我得到了一个错误:

PHP Warning: PHP Startup: FirstPHPExt Module: Unable to initialize module 
Module compiled with build ID=API20090626,TS 
PHP compiled with build ID=API20090626,TS,VC9 
These options need to match 
in Unknown on line 0 

为什么不说我编译模块VC9

更多信息:

操作系统:Windows7的64 PHP:5.3.3,TS,VC9

回答

9

好吧,我找到了解决办法:

您必须添加一个预处理器常量为PHP -src /的Zend/zend_build.h

#define PHP_COMPILER_ID "VC9" 

,它会工作。


发现的解决方案在这里:http://forums.zend.com/viewtopic.php?f=55&t=2045

+0

在你的情况下,它是编译器版本,但请注意,有时构建ID的其他部分之一可能是问题。如果API不同,那么您将针对另一个(不兼容)PHP版本进行编译,而不是将其部署到扩展。最后,如果TS/NTS不匹配,那么您需要在扩展项目中定义或取消定义“ZTS”预处理器定义以匹配PHP。 (TS =线程安全,NTS =非线程安全)。 – 2014-10-22 13:58:37

2

构建PHP和扩展的官方文档是在wiki

您应该为您的扩展创建一个config.w32文件并通过命令行构建它。这是官方支持的方法。

0

而且强烈建议使用与php本身相同的CRT(VC9)。在apache,php或其扩展之间使用混合CRT时存在已知问题。

+0

这是真的,但在VS2010下,您可以链接到vc9 crt。值得一试 – Stef 2012-01-07 09:51:48

+0

它只是一个UI选项,或者是否有一些链接器选项可以做到这一点?我无法找到可能的标志vc10与vc9 crt链接的文档。 – Pierre 2012-02-27 09:51:54

+0

进入项目的“属性”,“配置属性”,一般,您必须更改“平台工具集” – Stef 2012-02-28 10:37:42