我需要开发一些可以从 VB6 使用 Managed C++ (C++/CLI) 调用的类。
我首先用 C# 开发了一个示例,我可以毫无问题地通过 COM 使用程序集
只需使用设置“注册 COM 互操作”和“使程序集 COM 可见”(并使用属性 [ClassInterface(ClassInterfaceType.AutoDual)] 使方法在 VB6 中可用。
之后,我尝试将示例转换为 C++/CLI,但没有成功。我用 [ClassInterface(ClassInterfaceType.AutoDual)] 属性创建了相同的类。我已经设置了“嵌入式 IDL”设置来指定输出 TLB,但 TLB 不是自动生成的。如果我在生成的 DLL 上使用 tlbexp 实用程序,我会得到一个可以在 VB6 中导入的 tlb,但是当我尝试创建一个实例时,我得到一个“ActiveX 组件无法创建对象 (429)”
我还需要对项目做什么才能让它运行?
提前致谢。
最佳答案
没什么可做的,但您从未提到过注册程序集。 C++ IDE 没有“注册 COM 互操作”选项。从 Visual Studio 命令提示符,在程序集上运行 Regasm.exe 以注册它。如果不将程序集放入 GAC,则需要/codebase 选项。并且/tlb 选项会生成类型库,从而不需要 tlbexp.exe。
关于com - 从托管 C++ (C++/CLI) 生成 COM 可见程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4053589/