从托管c ++生成COM可见程序集(C++/CLI)

Ign*_*cia 6 com interop managed-c++ c++-cli

我需要开发一些应该可以从VB6使用托管C++(C++/CLI)调用的类.

我首先在C#中开发了一个示例,我只需使用"注册COM互操作"和"使汇编COM可见"(并使用属性[ClassInterface(ClassInterfaceType.AutoDual)]来通过COM进行汇编而没有问题在VB6上提供方法.

之后,我尝试将示例转换为C++/CLI,但没有成功.我使用[ClassInterface(ClassInterfaceType.AutoDual)]属性创建了相同的类.我已设置"嵌入式IDL"设置以指定输出TLB,但不会自动生成TLB.如果我在生成的DLL上使用tlbexp util,我得到一个可以在VB6导入的tlb但是当我尝试创建一个实例时,我得到一个"ActiveX compoennt无法创建对象(429)"

我还需要做什么来让项目运行?

提前致谢.

Han*_*ant 6

没什么可继续的,但你从未提及注册组件.C++ IDE没有"注册COM互操作"选项.从Visual Studio命令提示符,在程序集上运行Regasm.exe以使其注册.如果不将程序集放在GAC中,则需要/ codebase选项.并且/ tlb选项会生成类型库,从而无需使用tlbexp.exe.