![](/img/trans.png)
[英]Compiling a php extension with Visual Studio 2008, MODULE ID don't match with php
[英]Compiling my own PHP extension on Windows with Visual Studio 2008
我寫了一個PHP擴展,它可以在linux下成功編譯和運行。 但在Windows上,我遇到了一些問題。
我根據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上運行。
對不起,我不是專業人士,所以我希望有人可以幫助我。
任何幫助表示贊賞,並提前感謝〜
Wamp是使用VC6編譯的,它需要使用VC6編譯模塊。
報告Romain Bourdon(WampServer的作者)的話:因為Apache是用VC6編譯的,如果要將PHP作為模塊運行(如在WampServer中),則必須使用VC6編譯模塊。
如果要使用更新的平台編譯模塊,則必須編譯整個PHP-CGI分發並將其作為(快速)CGI運行。
如果您可以閱讀法語(或者如果您確實知道如何使用翻譯),您可以閱讀這篇文章 。
您在Linux上沒有看到問題的原因很可能是您在Windows上進行線程安全構建,而不是在Linux上進行。 嘗試在Linux上添加--enable-maintainer-zts
,然后使用valgrind檢查( USE_ZEND_ALLOC=0 valgrind /usr/bin/php script.php
)
從快速瀏覽你的代碼我發現你沒有定義你的php_xsplit_init_globals
初始化線程變量。 必須通過添加a來從MINIT
注冊Tis功能
ZEND_INIT_MODULE_GLOBALS(xsplit, php_yplist_init_globals, NULL);
呼叫。 也許別的東西是錯的,但那是我看到的第一件事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.