【发布时间】:2015-01-22 00:20:15
【问题描述】:
我有 ac# com 可见 dll,我想在 vb6 项目中调用这个 dll,它也会生成一个 dll。我没有使用 regasm.exe 来执行此调用,而是使用清单生成 c# dll 然后创建它的 tlb 并从 vb6 调用它。
我在 c# dll 中创建了两个接口,一个是 Itest,另一个是 Itest2,使两个接口都可见,并在两个接口中添加了 Guid,有两个名为 testimp 和 classimp 的类分别实现了这两个接口。这两个类是 comvisible , Classinterface 类型为 none 并具有各自的 GUID。
问题是我只能从我的 vb6 项目中实例化 testimp 类而不是 classimp 类。
【问题讨论】:
-
VB6 非常反对任何使清单工作的尝试。主要问题是它不直接支持将清单作为资源嵌入,并且当您使用 VB6 IDE 进行调试时,清单无法工作。您唯一能做的就是仅在调试和测试代码并准备好部署之后尝试此操作。使用 mt.exe 将清单作为资源 ID #2 嵌入到 VB6 dll 中。并且请考虑您仍然需要注册 VB6 dll 以便客户端程序可以找到它,因此您实际上并不领先。
-
通常,如果您在 Visual Studio 中编译您的 comvisible C# DLL,如果在项目设置中选择了“注册 COM 互操作”选项,它会自动注册。然后你可以在 VB6 中引用它。
标签: c# .net vb6 com-interop