将php扩展编译为dll

时间:2013-05-20 04:27:03

标签: php windows dll php-extension php-internals

我最近几天尝试使用运算符重载扩展(pecl.php.net/package/operator),最近显然已更新为与5.3和5.4兼容。

我尝试使用this guide在Windows(64位Windows 7)中使用PHP 5.4和Windows SDK 7.1进行编译,但没有运气。所以我尝试使用PHP 5.3和Windows SDK 6.1,我可以使用配置“configure --disable-all --enable-cli --enable-operator”然后“nmake”成功编译它。问题是它不会为操作员扩展生成一个dll文件,而是我得到的is this,这对我来说显然是无用的。我想要的是一个我可以用于本地WampServer设置的DLL。

我在pecl.php.net网站上尝试使用operator-0.4.1时遇到了致命错误,所以我从git存储库(github.com/php/pecl-php-operator)下载并编译,这就产生了.obj,.idb和.sbr文件。

2 个答案:

答案 0 :(得分:5)

你必须做

configure --disable-all --enable-cli --enable-operator=shared

否则它是静态编译的。

无论如何,如果你想将它与WampServer一起使用,二进制文件可能无法正常工作,因为如果我没弄错,WampServer是针对VC10 C运行时库编译的,而你链接的指南指示你使用Visual Studio 2008 (附带VC9)。您需要使用VC10编译器(我认为它与Windows SDK 7.1捆绑在一起,因此您可以下载并跳过Visual Studio)。

答案 1 :(得分:0)

进入扩展名根路径,并修改config.w32

EXTENSION('redis', sources); to EXTENSION('redis', sources,true);

buildconf --force

configure --enable-xx 

nmake

您将获得php-redis.dll