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

发布于 2024-09-29 14:26:10 字数 460 浏览 7 评论 0原文

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

我首先用 C# 开发了一个示例,我可以通过 COM 使用该程序集,没有任何问题 只需使用设置“注册 COM 互操作”和“使程序集 COM 可见”(并使用属性 [ClassInterface(ClassInterfaceType.AutoDual)] 使方法在 VB6 中可用。

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

我还需要对项目做些什么才能让它预先

感谢。

I need to develop some classes that should be callable from VB6 with Managed C++ (C++/CLI).

I've developed first a sample in C# and I can use the assembly through COM without problems
just using the setting "Register for COM interop" and "Make assembly COM visible" (and using the attribute [ClassInterface(ClassInterfaceType.AutoDual)] to make methods available at VB6.

After that I tried to translate the sample to C++/CLI without success. I've created the same class with the [ClassInterface(ClassInterfaceType.AutoDual)] attribute. I've set the "Embedded IDL" setting to specify the output TLB but the TLB is not generated automatically. If I use the tlbexp util over the generated DLL I get a tlb that can be imported at VB6 but when I try to create an instance I get an "ActiveX compoennt can't create object (429)"

What more do I need to do with the project to let it run?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俏︾媚 2024-10-06 14:26:10

没什么可说的,但你从未提到注册程序集。 C++ IDE 没有“注册 COM 互操作”选项。从 Visual Studio 命令提示符中,在程序集上运行 Regasm.exe 以将其注册。如果您不将程序集放入 GAC 中,则需要 /codebase 选项。 /tlb 选项生成类型库,从而不需要 tlbexp.exe。

Not much to go on but you never mentioned registering the assembly. The C++ IDE doesn't have the "Register for COM interop" option. From the Visual Studio Command Prompt, run Regasm.exe on the assembly to get it registered. You need the /codebase option if you don't put the assembly in the GAC. And the /tlb option generates the type library, making tlbexp.exe unnecessary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文