如何将 .tlb 文件转换为头文件和实现文件?

Posted

技术标签:

【中文标题】如何将 .tlb 文件转换为头文件和实现文件?【英文标题】:How do I convert a .tlb file to headers and implementation files? 【发布时间】:2011-09-21 14:50:20 【问题描述】:

我正在尝试转换 mscorlib.tlb。 它通常在 C++ 中这样使用:

#import "mscorlib.tlb" raw_interfaces_only              \
     high_property_prefixes("_get","_put","_putref")        \
     rename("ReportEvent", "InteropServices_ReportEvent")

如何将其转换为头文件和实现文件?

我能够使用 Visual Studio 编译一个包含上述行的虚拟 cpp 文件,并生成一个 .tlh 文件。不应该还有实现文件吗?

【问题讨论】:

赞成票 - 告诉我如何摆脱 ReportEvent 的警告。 【参考方案1】:

您可以使用#import 的“no_implementation”和“implementation_only”参数来拆分实现和声明。这些会生成 .tlh(类型库头文件)和 .tli(类型库实现)文件。

我通常将以下内容放入头文件(如 stdafx.h):

#import "C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorlib.tlb" no_implementation

并将以下内容写入一个 .cpp 文件(如 stdafx.cpp):

#import "C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorlib.tlb" implementation_only

【讨论】:

我相信你提到了implementation and DECLARATION .... 不是定义。

以上是关于如何将 .tlb 文件转换为头文件和实现文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将值设置为头文件中声明的指针

将代码拆分为头文件和主代码

将接口 IDL 文件转换为 C#

RegAsm.exe 和 regsvr32 有啥区别?如何使用 regsvr32 生成 tlb 文件?

VC6的MFC如何调用C#的tlb文件

Cuda不能将类拆分为头和实现