【问题标题】:How to use multiple idl files in ATL (COM) Project for .Net C# VS 2012如何在 .Net C# VS 2012 的 ATL (COM) 项目中使用多个 idl 文件
【发布时间】:2014-08-05 23:59:30
【问题描述】:

我是 C++/COM 的新手。我创建了一个带有回调机制的 ATL COM 项目,用于将消息发送到托管端。它有一个 idl 文件 (sample1.idl),它公开了“n”个方法,因此托管环境可以访问它。现在我想向该项目添加另一个 .idl(sample2.idl) 文件。 .tlb 为 sample1 & sample2 创建并且构建成功。在浏览 .dll 时,我找不到 sample2.idl 相关的东西。我怀疑从“sample2.idl”生成的 .tlb 没有反映在 .dll 中。

我们可以在 ATL (COM) 项目中拥有多个 IDL 吗?

【问题讨论】:

    标签: visual-c++ com


    【解决方案1】:

    与许多本机构建环境一样,ATL 的默认设置是将类型库作为资源嵌入到 DLL 中。您可以在 Visual Studio 中看到的内容(需要零售版),使用 File + Open + File 并选择 DLL。打开“TYPELIB”节点,您将看到一个资源 ID #1 的类型库。这是 Visual Studio 在您使用添加引用时看到的。

    大多数使用类型库的构建工具只会寻找那个一个资源。 Visual Studio 也不例外。它也只能在其项目文件中编码一个类型库。您也许可以通过使用“添加引用”对话框选择第二个 .tlb 文件来使其工作。尽管现在您很可能会在 ATL 项目中遇到更多问题,例如忘记在 .rgs 文件中注册第二个类型库。

    如果不提示第二个 IDL 文件可能包含什么,很难给出正确的建议。通过合并它们或使用 existing support in IDL 导入其他 .idl 文件或类型库来避免麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 2011-10-12
      • 1970-01-01
      • 2017-05-04
      • 2011-03-17
      • 2011-09-26
      • 2017-06-24
      相关资源
      最近更新 更多