编译要在PHP中使用的第三方DLL

时间:2018-04-05 02:24:23

标签: php dll wampserver

我正在尝试将第三方库编译为dll以在PHP5.6.31中使用。按照php构建路线here和dll' reference guide(从索引中选择'使用来自PHP的lpsolve' 并向下滚动到编译部分)。这就是我做的。

  1. here下载了PHP来源php-5.6.31-src.zip
  2. here下载二进制工具php-sdk-binary-tools-20110915.zip
  3. here下载了php库deps-5.6-vc11-x86.7z
  4. 设置构建目录并将源文件和deps提取到此目录C:\php-sdk\phpdev\vc11\x86\
  5. 下载lp_solve_5.5.2.5_dev_win32.zip here并将其解压缩到C:\lp_solve_5.5
  6. 下载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
  7. 打开Visual Studio 2012附带的VS2012 x86 Native Tools Command Prompt
  8. 然后C:\php-sdk>bin\phpsdk_setvars.bat然后C:\php-sdk\phpdev\vc11\x86\php-5.6.31-src>buildconf
  9. 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"
  10. Ran nmake php_phplpsolve55.dll在此目录php_phplpsolve55中创建了名为C:\php-sdk\phpdev\vc11\x86\php-5.6.31-src\Release_TS的dll。
  11. 然后我将php_phplpsolve55复制到我的wampserver php extensions文件夹C:\wamp\bin\php\php5.6.31\ext
  12. 将此行添加到我的php.ini文件extension=php_phplpsolve55.dll
  13. 然后我重新启动了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获得此内容。

0 个答案:

没有答案