[急]请教各路大神:如何用C#创建一个进程外COM服务器(EXE)??

青木龙殿下 2014-10-10 10:57:58
小弟最近在做一个连接扫描仪的项目。
扫描仪供应商那里目前只有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的,对进程通信这一块还没接触过,找了一些资料,说得都比较笼统,项目迫在眉睫,小弟斗胆请教各位大神,望指点一下迷津! 不慎感激!
...全文
574 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
青木龙殿下 2014-10-10
  • 打赏
  • 举报
回复
人工置顶~ 请教做过的朋友。
Forty2 2014-10-10
  • 打赏
  • 举报
回复
C#可以用ServicedComponent,它在EnterpriseServices命名空间下。 例子可参考: http://msdn.microsoft.com/zh-cn/library/ty17dz7h%28VS.80%29.aspx
jshi123 2014-10-10
  • 打赏
  • 举报
回复
把目标平台设成32位不是简单?
rtdb 2014-10-10
  • 打赏
  • 举报
回复
进程外COM服务器(EXE)?? TOO OLD,太过时的概念了 你直接用WEB SERVICE或WCF封装DLL就好了,很简单方便的
threenewbee 2014-10-10
  • 打赏
  • 举报
回复
http://blogs.msdn.com/b/adioltean/archive/2004/06/18/159479.aspx

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧