2014-10-09 65 views
0

我想在Windows上定制一个php扩展(php_ext.dll),但是这个扩展需要使用其他a.dll文件(这个dll是我自己编译的)。 PHP build ENV:vs2008 + win7 当我构建php_ext.dll时,我已将a.lib添加到php扩展的项目中。如何在php扩展中包含其他dll?

构建成功后,我将a.dllphp_ext.dll复制到php扩展名目录中,然后将extension =php_ext.dll添加到php.ini中。

当我在Windows命令中运行php -m时,我可以看到这个扩展,但是当我启动Apache时,该扩展无法加载。以下是Apache的错误日志:

[提醒]初始化:会话缓存没有配置[提示:SSLSessionCache] httpd.exe:无法可靠地确定了服务器的完全合格的域名,使用10.64.74.148 ServerName的

PHP的警告:PHP启动:无法加载动态库 'C:\ PHP \ php_ext.dll' - 指定的模块找不到\ r \ n的未知在线0

回答

0

这是因为与php -m你运行PHP二进制文件,与Apache你加载PHP为DLL。

在这种情况下,dll搜索顺序在第一种情况下会找到a.dll,因为它位于php二进制文件所在的位置,但在运行apache二进制文件时找不到它,因为它不在其目录中,没有其他搜索的目录。

您既可以复制a.dll做apache文件夹,也可以复制到任何其他搜索过的文件夹,例如c:\ Windows。

+0

这将复制你''.dll.'到'apache/bin'文件夹! – RiggsFolly 2014-10-09 13:08:03