2009-06-24 53 views
3

我寫了一個PHP擴展,它可以被編譯和linux下運行成功。但在窗戶上,我遇到了一些問題。編譯在Windows上我自己的PHP擴展與Visual Studio 2008

我根據http://blog.slickedit.com/?p=128使用PHP源代碼5.2.10在windows上編譯,編譯後生成了dll文件。但是當我嘗試使用dll文件時,它在啓動Apache(Wamp服務器)時向我報告了內存問題。然後我開始了調試過程,看起來REGISTER_INI_ENTRIES()有問題。

這裏是PHP擴展的源代碼,http://www.bluefly.cn/xsplit.tar.gz,並能正常工作在Linux上。但我也想讓它在Windows上工作。

對不起我不是一個職業,這樣我希望有人能幫助我。

任何幫助表示讚賞,並在此先感謝〜

+0

有沒有在Windows上做這些東西的任何完整指南? – 2009-06-24 02:02:41

回答

2

你沒有看到在Linux上的問題的原因最有可能是你正在做的Windows上的線程safebuild,但不能在Linux上。嘗試在Linux上增加--enable-maintainer-zts,然後檢查使用的valgrind(USE_ZEND_ALLOC=0 valgrind /usr/bin/php script.php

從快速glanceover你的代碼,我看到你沒有定義php_xsplit_init_globals其初始化線程變量。這個功能必須通過MINIT加入

ZEND_INIT_MODULE_GLOBALS(xsplit, php_yplist_init_globals, NULL); 

調用。也許別的東西是錯的,但那是我看到的第一件事。

2

WAMP使用VC6編寫,它需要你的模塊用VC6進行編譯。因爲Apache是​​用VC6編譯的,所以如果你想運行PHP作爲一個模塊(就像在WampServer中一樣),你必須用VC6編譯模塊。

如果你想用一個更近的平臺,編譯模塊,你必須編譯整個PHP,CGI分佈和運行它作爲一個(快)CGI。

如果你的法語(或者,如果你知道如何使用翻譯器),你可以閱讀this post

相關問題