c++ - 如何在 VS C++ 中使用 .tlb 类型创建接口(interface)方法?

标签 c++ visual-studio-2008 com atl typelib

背景:

  1. .TLB 文件包含用“X”语言编写的接口(interface)。我没有 .h、.idl、.tlh 或任何其他头文件 - 只有 .TLB 文件。语言“X”不导出兼容的 .h、.idl 等。
  2. 我使用 VS 向导将 ATL 简单对象添加到我的 ATL 项目中。

我想向简单 ATL 对象的接口(interface)添加一个方法,该对象使用 .TLB 定义的类型之一作为参数。

// Something like the following in the .idl file:
interface ISomeInterface : IUnknown {
   HRESULT SomeMethod([in] ITypeFromTLB* aVal); // ITypeFromTLB declared in .TLB file.
};

我该怎么做?我希望有一个向导,或者 .idl 接口(interface)声明中的一行可以引入 .tlb 信息。 midl 的 include(无 .tlb)、import(无 tlb)和 importlib(仅库)似乎没有提供解决方案(我需要代理/ stub 才能工作,所以我不能把这个使用 importlib 命令在库声明中)。

最佳答案

使用#import在 cpp/h 中将 TLB 接口(interface)引入您的命名空间。

关于c++ - 如何在 VS C++ 中使用 .tlb 类型创建接口(interface)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2473595/

相关文章:

c++ - MFC 功能包 2008 CPaneDialog 作为 CDialogBar

python - 何时为 COM 服务器生成新的 GUID? (Python 中的示例)

java - 使用 JButton 的无锁循环

c++ - 为什么这个函数对象不需要指定?

c++ - OpenGL:如何检查用户是否支持 glGenBuffers()?

c++ - 以下声明之间的区别?

c++ - 如何在 Visual Studio 中强制输出构建错误的绝对路径

c++ - 如何将 void* 放入 COM VARIANT,以便它被 COM-Interop 编码为 IntPtr 到 .NET?

c++ - 知道任何好的 c++ 支持 vector 机 (SVM) 库吗?

c++ - 为什么模板只能在头文件中实现?