在DLL里面调用COM组件的接口函数出错

vista1975 2011-06-22 09:43:45
本人开发工具是VS2010,操作系统是WINDOWS7 64位,C# 开发。

调用COM组件的方法是直接在 Add Reference 对话框中选择COM选项卡,选择其中的COM服务。

如果在生成的一个应用程序(EXE)中直接添加,没问题,一切正常。

但我需要在一个DLL中调用COM,然后外部EXE程序再调用我的DLL,这个时候就会出现COM的某些函数无法调用,就会出现类似“Error HRESULT E_FAIL has been returned from a call to a COM component.”的错误。

困扰2天了,求解!
...全文
421 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
vista1975 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mjp1234airen4385 的回复:]

在Dll中调用com组件,一般要加入组件初始化的调用。
你找到初始化comm组件的api函数,导入到你的dll工程中。
在dll中使用com组件之前,调用初始化函数。
CoInitialize
[/Quote]

老兄,我根本就找不到CoInitialize,能否贴出一点代码?谢谢
mjp1234airen4385 2011-06-22
  • 打赏
  • 举报
回复
在Dll中调用com组件,一般要加入组件初始化的调用。
你找到初始化comm组件的api函数,导入到你的dll工程中。
在dll中使用com组件之前,调用初始化函数。
CoInitialize
vista1975 2011-06-22
  • 打赏
  • 举报
回复
在DLL中调用COM后,调用DLL的外部EXE就不需要再直接调用COM了,功能都在DLL中实现了嘛。

我想我已经表述清楚了吧。
vista1975 2011-06-22
  • 打赏
  • 举报
回复
在DLL中调用COM后,调用DLL的外部EXE就不需要再直接调用COM了,功能都在DLL中实现了嘛。

我想我已经表述清楚了吧。
vista1975 2011-06-22
  • 打赏
  • 举报
回复
如果在exe程序中调用com就没有任何问题,如果是在dll中调用就出错。
龍月 2011-06-22
  • 打赏
  • 举报
回复
外部EXE程序 是什么程序?
有没有代码?
感觉 外部这个程序是不是也要引用 com
LIMINLY520 2011-06-22
  • 打赏
  • 举报
回复
学习中……
vista1975 2011-06-22
  • 打赏
  • 举报
回复
顶上去,求解!
vista1975 2011-06-22
  • 打赏
  • 举报
回复
注意,我的DLL是运行在windows服务进程之中。

如果不在windows服务中运行的话,是可以通过DLL调用COM组件的。

呵呵。

vista1975 2011-06-22
  • 打赏
  • 举报
回复
System.Runtime.InteropServices.COMException was caught
Message=Exception from HRESULT: 0xC0040007
Source=GWOPC.NET
ErrorCode=-1073479673
vista1975 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 loveyan52152112 的回复:]

那就在EXE所在的DLL引用COM组建呗,后台调用时通过委托来实现不就行了!
[/Quote]

DLL都是不行的。
slg2003 2011-06-22
  • 打赏
  • 举报
回复
学习~~~`
白鸽 2011-06-22
  • 打赏
  • 举报
回复
那就在EXE所在的DLL引用COM组建呗,后台调用时通过委托来实现不就行了!
vista1975 2011-06-22
  • 打赏
  • 举报
回复
还是迷茫中。。。

111,098

社区成员

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

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

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