我写了一个PHP扩展,在linux下编译运行成功。但是在 Windows 上,我遇到了一些问题。
我是根据http://blog.slickedit.com/?p=128在windows上编译的PHP源码版本5.2.10,编译后生成dll文件。但是当我尝试使用 dll 文件时,它在启动 Apache(Wamp 服务器)时向我报告了内存问题。然后开始调试,好像是REGISTER_INI_ENTRIES()有问题。
这是 PHP 扩展源代码,http://www.bluefly.cn/xsplit.tar.gz , 它在 Linux 上运行良好。但我也想让它在 Windows 上运行。
对不起,我不是专业人士,所以我希望有人能帮助我。
感谢任何帮助并提前致谢~
最佳答案
您在 Linux 上没有看到问题的原因很可能是您在 Windows 上执行线程安全构建,而不是在 Linux 上。尝试在 Linux 上添加 --enable-maintainer-zts
然后使用 valgrind 检查 (USE_ZEND_ALLOC=0 valgrind/usr/bin/php script.php
)
通过快速浏览您的代码,我发现您没有定义初始化线程变量的 php_xsplit_init_globals
。必须通过添加一个
MINIT
注册Tis函数
ZEND_INIT_MODULE_GLOBALS(xsplit, php_yplist_init_globals, NULL);
打电话。也许还有其他问题,但这是我看到的第一件事。
关于php - 使用 Visual Studio 2008 在 Windows 上编译我自己的 PHP 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1036110/