如何在php扩展中包含其他dll?
问题描述:
我想在Windows上定制一个php扩展(php_ext.dll
),但是这个扩展需要使用其他a.dll
文件(这个dll是我自己编译的)。 PHP build ENV:vs2008 + win7 当我构建php_ext.dll
时,我已将a.lib
添加到php扩展的项目中。如何在php扩展中包含其他dll?
构建成功后,我将a.dll
和php_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
答
这是因为与php -m
你运行PHP二进制文件,与Apache你加载PHP为DLL。
在这种情况下,dll搜索顺序在第一种情况下会找到a.dll,因为它位于php二进制文件所在的位置,但在运行apache二进制文件时找不到它,因为它不在其目录中,没有其他搜索的目录。
您既可以复制a.dll做apache文件夹,也可以复制到任何其他搜索过的文件夹,例如c:\ Windows。
这将复制你''.dll.'到'apache/bin'文件夹! – RiggsFolly 2014-10-09 13:08:03