【发布时间】:2012-01-25 07:30:57
【问题描述】:
我有一个项目需要使用 PHP 访问 DLL。服务器为 Windows 机器,Apache 服务器由 XAMPP 提供。
我在网上阅读了多个答案,例如
- Use DLL in PHP?
- php communication with dll?
- calling dll through php
- http://ca.php.net/manual/en/class.com.php
- http://ca2.php.net/manual/en/book.w32api.php
- http://www.talkphp.com/absolute-beginners/3340-php-how-load-com-dll-file.html
这是我在HTA / Javascript 中调用 DLL 的方式:
<object style="display:none" id="SOME_ID" classid="clsid:SOME_CLASS_ID" codebase="./somePath.dll"></object>
有人有工作示例吗?
这是我迄今为止在 PHP 中尝试过的:
$obj = new COM('pathTo.dll');
DLL 信息:
- 使用 Delphi 编译
- (当然)是自制的
- 当我尝试使用
regsvr32注册 DLL 时,我收到以下错误the DllRegister Server entry point was not found
不用regsvr32注册就可以使用吗?
【问题讨论】:
-
COM 类的 CLSID 是什么?我怀疑你没有创建一个为 COM 互操作做好准备的 DLL...
-
我读过的关于这个主题的所有内容都告诉我,这样做的方法是为可以构建到 PHP 扩展中的 DLL 编写一个 C++ 包装器,并以这种方式使用它。我从来没有尝试过,也不能告诉你怎么做,但我以前遇到过这个问题(你链接到几个人问同样的问题),我从来没有见过有人说“我让它工作了”除非他们构建了一个扩展。
-
@ThorstenDittmar
CLSID是一个字符串 AlphaNumeric 字符串,格式如下 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX。准备好用于 COM 互操作的 DLL 是什么意思 -
@DavidLaberge
CLSID(我认为)在技术上是UUID,在这种情况下使用时可能需要包裹在{}中 -
好吧,从我在链接和你的问题中看到的,你必须向系统注册你的 DLL 并注册一个你可以从 PHP 中使用的 COM 类。如果你不这样做,它就行不通。