2009-06-24 138 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

相关问题