繁体   English   中英

使用Visual Studio 2008在Windows上编译我自己的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM