【发布时间】:2015-07-25 01:09:46
【问题描述】:
我已经使用 Visual Studio 2013 创建了一个带有 COM 接口的 c++ DLL。 DLL get 与注册一起安装。 在 Ole 对象查看器中,我可以看到这个 DLL 的类型库 导出的函数。 regsvr32 完成,没有任何错误。
在 C# 中我不能使用,因为创建失败并出现错误 0x80040154 - 类未找到或未注册。
这不是平台问题。 64位版本在system32和32位 syswow64 中的版本,它们在那里注册和类型库信息 在 OLE 对象查看器中确认了这一点。
但该类未列在 OLE 对象查看器树中。
不知道有什么遗漏或错误。
此外,我有一个类似的 VC++ 项目,可以看到这个 COM/DLL 在 OLE 对象查看器的视图中。它被编译,链接 并以完全相同的方式安装。
我已经比较了所有编译器、链接器和 MIDL 设置,检查了 .idl 项目中的文件,.rgs 文件......一切似乎都是一样的,除了 不同的名称和指导。
所以真的很奇怪:一个在树中显示为 COM 对象 OLE 对象查看器,可以在C#程序中使用,其他的不行。
请注意:在使用此 DLL/COM 的 C# 项目中没有编译器错误。 创建 0x80040154 时出现运行时错误。
总结:我要COM/DLL,两个visual studion项目,部署在同一个 方式,一个可以在 OLE 对象树中看到,可以在 C# 中使用,另一个不能。
是否有任何我可以检查的关键点以及成功所需的关键点 列为 OLE COM 对象?
PS:唯一的区别是类型库视图中显示的 MSIL 编译器版本:好的 COM/DLL 有 MSIL 7.xxx 坏的 8.xxx 但我根本不知道选择 MSIL 编译器的位置。 DLL/COM 均已构建 通过 VS2013
【问题讨论】: