Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从托管c+;生成COM可见程序集+;(C+;+;/CLI) 我需要开发一些从VB6中调用C++ C++(C++/CLI)的类。_Com_Interop_C++ Cli_Managed C++ - Fatal编程技术网

从托管c+;生成COM可见程序集+;(C+;+;/CLI) 我需要开发一些从VB6中调用C++ C++(C++/CLI)的类。

从托管c+;生成COM可见程序集+;(C+;+;/CLI) 我需要开发一些从VB6中调用C++ C++(C++/CLI)的类。,com,interop,c++-cli,managed-c++,Com,Interop,C++ Cli,Managed C++,我首先用C#开发了一个示例,我可以通过COM毫无问题地使用该程序集 只需使用设置“Register for COM interop”和“Make assembly COM visible”(并使用属性[ClassInterface(ClassInterfaceType.AutoDual)]使方法在VB6上可用 之后,我尝试将示例转换为C++/CLI,但没有成功。我使用[ClassInterface(ClassInterfaceType.AutoDual)]属性创建了同一个类。我设置了“嵌入式ID

我首先用C#开发了一个示例,我可以通过COM毫无问题地使用该程序集 只需使用设置“Register for COM interop”和“Make assembly COM visible”(并使用属性[ClassInterface(ClassInterfaceType.AutoDual)]使方法在VB6上可用

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

我还需要对项目做什么才能让它运行


提前感谢。

继续进行,但你从未提到过注册程序集。C++ IDE没有“COM互操作登记”。选项。在Visual Studio命令提示符下,对程序集运行Regasm.exe以将其注册。如果未将程序集放入GAC中,则需要/codebase选项。并且/tlb选项生成类型库,使tlbexp.exe变得不必要。

我正在使用tlbexp自动注册程序集,对吗?会报告/tlb选项编译器和链接器无法识别。你确定吗?不,tlbexp只生成一个类型库,没有注册任何内容。/tlb选项是针对Regasm.exe的,而不是编译器或链接器。你没有从我的帖子中得到这一点,这让我非常困惑。这一定与这里有点晚有关。我重新阅读了你的pos我和你一样困惑:)