+ -
当前位置:首页 → 问答吧 → php调用一个c++编写的dll文件的问题!向高手们求救来了

php调用一个c++编写的dll文件的问题!向高手们求救来了

时间:2011-07-05

来源:互联网

一个硬件提供商提供的一个SDK,是一个DLL文件,PHP部分需要调用里面的相关函数来取得相关数据!我目前按照的进展是,DL()函数已经PASS掉了,这不是一个PHP标准扩展,调用失败;COM组件方式,问了硬件提供商的技术支持人员,他们说编译方式不是COM,里面没有类,只有一些导出函数这样;按照网上的方法,用DynamicWrapper方式调用过,代码我贴上;
DynamicWrapper方式:
<<a.下载DynamicWrapper.dll到php ext下与windows/system32下
b.注册dll,regsvr32 path/DynamicWrapper.dll
c.在php中开启DynamicWrapper扩展
d.将要使用的dll拷贝入windows system32下
e.在php中使用:>>
//以上步骤已经全部走完
$dw = new COM("DynamicWrapper");
//函数说明:int __stdcall HS_InitDVSSDK(bool needWSAStartup = true)
//DynamicWrapper的参数我也一一尝试和研究过,都失败报错
$dw->Register("HS_DVS_SDK.dll", "HS_InitDVSSDK", 'i=u', "f=s", "r=s");
$ch = $dw->HS_InitDVSSDK($needWSAStartup = true);
/********************************************/
结果:运行程序,不报错,也没有任何返回值,不知道是不是没有成功调用这个DLL,希望有过经验或者是知道的朋友不吝赐教

作者: dxkvller   发布时间: 2011-07-05

你还是考虑再写个壳子,直接用exe调这个DLL吧。
php再调这个exe,这样就简单多了。

作者: iminto   发布时间: 2011-07-05

如果是这样的话,是不是要用VC来写壳子,那PHP与EXE这个不好进行数据交换吧?请指教?

作者: dxkvller   发布时间: 2011-07-05

像这种情况,如果写成PHP扩展,会不会更好一点?

作者: dxkvller   发布时间: 2011-07-05

呵呵,已经自己解决了!

作者: dxkvller   发布时间: 2011-07-06

请问楼主最后是怎么解决了,我也遇到同样问题。

作者: orrinzeng   发布时间: 2012-02-05

吼吼...强悍啊!!

作者: pro.coding   发布时间: 2012-02-08

你好 我看到了你的帖子 我也想请教您一下这个问题 能告诉我一下是怎么解决的么 刚接触PHP 所以懂得不是很多 巧的是和您碰到同样的问题 请您帮下忙好么?能告诉我您的QQ么? 我的QQ 是1016793967.

作者: egeegssb   发布时间: 2012-04-19