0

我正在 VB.NET 2010 中编写一个 COM DLL(我们称之为 DLL A)。此 DLL 使用预先存在的 DLL (DLL B) 中的函数。当我从 VS2010 中的测试应用程序运行代码时,一切正常。

(测试应用程序)--> (DLL A)--> (DLL B)

现在我在真实的 APP(在 VB6 中)中添加对 DLL A 的引用

(真实应用)--> (DLL A)--> (DLL B)

...我得到这个错误

无法将类型为“System.__ComObject”的 COM 对象转换为接口类型“Object.class”。此操作失败,因为对具有 IID '{GUID}' 的接口的 COM 组件的 QueryInterface 调用由于以下错误而失败:不支持此类接口(HRESULT 异常:0x80004002 (E_NOINTERFACE))。

DLL A 确实被初始化了,但是一旦我调用一个引用 DLL B 的函数,它就会出错。

帮助!

4

1 回答 1

1

当您部署 .NET DLL 并希望将其与 COM(VB6) 一起使用时,您需要使用“RegASM”在您的程序集中进行注册。注册 GAC 文件夹以外的文件夹时,您必须包含 /codebase 开关。

使用 /codebase 开关,它必须是强名称程序集。

于 2012-04-19T17:24:54.833 回答