2010-09-04 94 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