我正在尝试将第三方库编译为dll
以在PHP5.6.31
中使用。按照php构建路线here和dll' reference guide(从索引中选择'使用来自PHP的lpsolve' 并向下滚动到编译部分)。这就是我做的。
php-5.6.31-src.zip
。 php-sdk-binary-tools-20110915.zip
。 deps-5.6-vc11-x86.7z
。 C:\php-sdk\phpdev\vc11\x86\
。 lp_solve_5.5.2.5_dev_win32.zip
here并将其解压缩到C:\lp_solve_5.5
。 lp_solve_5.5.2.5_PHP_source.tar.gz
here并将其解压缩,然后从解压缩的文件中将此文件夹lp_solve_5.5\extra\PHP
复制到C:\php-sdk\phpdev\vc11\x86\php-5.6.31-src\ext\lp_solve_5.5
。 VS2012 x86 Native Tools Command Prompt
。C:\php-sdk>bin\phpsdk_setvars.bat
然后C:\php-sdk\phpdev\vc11\x86\php-5.6.31-src>buildconf
。 C:\php-sdk\phpdev\vc11\x86\php-5.6.31-src>cscript /nologo configure.js --without-xml --without-wddx --without-simplexml --without-dom --without-libxml --disable-zlib --without-sqlite3 --disable-odbc --disable-cgi --enable-cli --without-iconv --enable-phplpsolve55=shared --with-phplpsolve55path="C:\lp_solve_5.5"
。 nmake php_phplpsolve55.dll
在此目录php_phplpsolve55
中创建了名为C:\php-sdk\phpdev\vc11\x86\php-5.6.31-src\Release_TS
的dll。 php_phplpsolve55
复制到我的wampserver php extensions文件夹C:\wamp\bin\php\php5.6.31\ext
。 php.ini
文件extension=php_phplpsolve55.dll
。 然后我重新启动了Wampserver,但php_lpsolve55
扩展名未显示在已加载的扩展程序中。我检查了php_error日志,这是错误。
PHP警告:PHP启动:无法加载动态库' c:/wamp/bin/php/php5.6.31/ext/php_phplpsolve55.dll' - 指定的模块无法找到。在第0行的未知中
除了php_error日志之外,还有其他方法可以解决此问题吗? 从其他帖子我读到这可能是编译器兼容性问题?
这是我的WampServer版本。
WampServer 3.1.0版 - 32位
Apache版本:2.4.27
PHP版本:5.6.31
以下是phpinfo()
编译器:MSVC11(Visual C ++ 2012)
PHP扩展版本:API20131226,TS,VC11
线程安全:已启用
注意:我将C:\php-sdk\phpdev\vc11\x86\php-5.6.31-src\ext\lp_solve_5.5\PHPmod.c
的第5行更改为static zend_function_entry php_phplpsolve55_functions[] = {
我从此post获得此内容。