将 DLL 与 PHP 一起用于傻瓜

2024-04-12php开发问题
2

本文介绍了将 DLL 与 PHP 一起用于傻瓜的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我有一个项目需要使用 PHP 访问 DLL.服务器是Windows机器,Apache服务器由XAMPP提供.

I have a project that needs to access a DLL with PHP. The server is a Windows machine and the Apache server is provided by XAMPP.

我在网上阅读了多个答案,例如

I read multiple answers on the web like

  • 在 PHP 中使用 DLL?
  • php与dll通信?
  • 通过php调用dll
  • 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 的方式:

Here is how I call the DLL in HTA / Javascript:

<object style="display:none" id="SOME_ID" classid="clsid:SOME_CLASS_ID" codebase="./somePath.dll"></object>

有人有工作示例吗?

这是我迄今为止在 PHP 中尝试过的:

Here is what I tried so far in PHP:

$obj = new COM('pathTo.dll');

DLL 信息:

  1. 使用 Delphi 编译
  2. 它(当然)是自制的
  3. 当我尝试使用 regsvr32
  4. 注册 DLL 时,我收到以下错误 找不到 DllRegister 服务器入口点

不用regsvr32注册就可以使用吗?

Can it be used without registering it with regsvr32?

推荐答案

创建 DLL 文件时,需要使用 模块定义文件.它将包含与此类似的内容:

When you create your DLL file, you need to use a module definition file. It will contain something similar to this:

;
;contains the list of functions that are being exported from this DLL
;

DESCRIPTION     "Simple COM object"

EXPORTS
                DllGetClassObject       PRIVATE
                DllCanUnloadNow         PRIVATE
                DllRegisterServer       PRIVATE
                DllUnregisterServer     PRIVATE

该定义允许 regsvr32 找到 DllRegisterServer 入口点.

That definition allows regsvr32 to find the DllRegisterServer entry point.

您可以尝试的另一个选项是将/n 标志传递给 regsvr32.

Another option you can try is to pass the /n flag to regsvr32.

Regsvr32 [/u] [/n] [/i[:cmdline]] dllname

Regsvr32 [/u] [/n] [/i[:cmdline]] dllname

/u - 注销服务器

/i - 调用 DllInstall 并传递一个可选的 [cmdline];与/u 一起使用时调用 dll 卸载

/i - Call DllInstall passing it an optional [cmdline]; when used with /u calls dll uninstall

/n - 不调用 DllRegisterServer;此选项必须与/i 一起使用

/n - do not call DllRegisterServer; this option must be used with /i

/s – 静音;不显示消息框(随 Windows XP 和 Windows Vista 添加)

/s – Silent; display no message boxes (added with Windows XP and Windows Vista)

最终,在您尝试使 DLL 与 PHP 一起工作之前,您需要确保您的 DLL 能够正常工作.

Ultimately, before you try to make a DLL work with PHP, you need to be sure your DLL works in general.

这篇关于将 DLL 与 PHP 一起用于傻瓜的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17