小弟最近在做一个连接扫描仪的项目。
扫描仪供应商那里目前只有32位的DLL,调用驱动,连接扫描仪。
但公司项目是用的anycpu目标平台,在64位电脑上无法调用该调用驱动的DLL相关组件;
找了很多资料,说是64位进程不能调用32位DLL,如果用COM组件方式,两进程之间通信,能够解决。
但小弟在实施这些的时候遇到了问题:
大神给出的解决思路如下:
工作流程:
1.创建一个进程外COM服务器(EXE)。
2.将32位dll的接口函数封装为COM服务器的相关接口。
3.注册COM服务器*.exe /regserver (注销 *.exe /unregserver)。
4.64位进程调用32位COM服务器接口,成功。从而曲线实现了64位进程调用32位dll。
具体步骤:
我首先创建了一个简单的dll工程,只输出一个函数int c = add(int a,int b); 生成lib和dll
然后创建一个进程外COM(EXE类型),内部链接dll,添加方法Method: Add(long *c)
{ *c = add(1,2);}编译生成。
然后注册COM,*.exe /regserver
最创建一个64位WIN32工程验证64位环境下方法调用是否正确,经验证正确!!!
小弟以前都是搞ASP.NET的,对进程通信这一块还没接触过,找了一些资料,说得都比较笼统,项目迫在眉睫,小弟斗胆请教各位大神,望指点一下迷津!
不慎感激!