【发布时间】:2009-04-01 19:17:19
【问题描述】:
我们正在与这里开发的一块硬件进行交互,并允许通过网络进行访问。该设备的固件是用 C 语言编写的,其中一部分固件是大约 5000 行代码,用于解析巨大的二进制文件以获取配置数据,并编译为 .dll。
有没有什么方法可以让我从 PHP 访问一个用 C 编写的 .dll?
我敢打赌这不会,但在开始尝试在 PHP 中复制 5000 行 C 代码之前,我想我应该给这里的专家一个机会。
谢谢大家。
JH
【问题讨论】:
我们正在与这里开发的一块硬件进行交互,并允许通过网络进行访问。该设备的固件是用 C 语言编写的,其中一部分固件是大约 5000 行代码,用于解析巨大的二进制文件以获取配置数据,并编译为 .dll。
有没有什么方法可以让我从 PHP 访问一个用 C 编写的 .dll?
我敢打赌这不会,但在开始尝试在 PHP 中复制 5000 行 C 代码之前,我想我应该给这里的专家一个机会。
谢谢大家。
JH
【问题讨论】:
是的,您可以将其用作 php 扩展(用 C 编写),但您可能需要进行一些修改......等等
http://devzone.zend.com/node/view/id/1021
我认为this question与你的有关。
【讨论】:
您可能想查看SWIG,这是一种用于包装库的通用工具,以便可以从各种语言中调用它们。 SWIG 支持 PHP,Perl 和 Lua(我个人使用的目标)也支持。引用SWIG website的功能列表:
SWIG 当前生成包装器代码 针对十八个不同的目标 语言:
- 快板 CL
- C#
- CFFI
- CLISP
- 鸡
- 鬼乐
- Java
- 卢阿
- Modula-3
- Mzscheme
- OCAML
- 八度
- Perl
- PHP
- Python
- R
- 红宝石
- Tcl
- UFFI
除此之外,解析树 可以导出为 XML 和 Lisp s 表达式。实验工作是 也可用于 Pike 模块。
它的一些功能依赖于每种语言包装器生成器的后端支持,但通常它提供了易于使用的包装器,用于将所有纯数据值类型传入和传出函数。在目标语言有概念的地方,它通常也可以映射对象模型。
【讨论】:
难道你不能把你需要的DLL部分编译成一个可执行文件,然后从php中执行并利用结果吗?
类似
$data = `someprogram --options`
然后,随心所欲地使用数据。
【讨论】: