C ++为什么使用TLB文件而不是实际的DLL?

时间:2016-01-11 10:23:00

标签: c++ visual-studio

我有一些遗留的C ++代码。

我有DLL Bob。 我也有Jane的节目。

程序Jane通过他的TLB文件导入Bob。

#import 'Bob.tlb'

为什么Jane会像那样使用Bob?

Jane为什么不像这样使用Bob?

#import 'Bob.dll'

我有双方的源代码。 感谢您的帮助或指示!

2 个答案:

答案 0 :(得分:4)

#import dll等效于仅在dll包含类型库作为ITypeLib类型资源时导入tlb,如LoadTypeLib API调用所示。

情况并非总是如此:

  • dll不必包含tlb作为资源
  • 您可能希望通过COM互操作使用托管dll:dll不包含tlb,您必须使用tlbexp工具
  • 生成它
  • 可能还有其他情景

答案 1 :(得分:0)

TLB是类型定义,也可以包含在DLL中。 如果直接使用#import * .tlb或#import * .dll,MIDL编译器将生成.tlh和.thi,用于以下编译步骤。

直接#import不是一个好选择。 如果#impteb在同一个项目的不同cpp中导入相同的.tlb,则会引入重复.tlh&生成.tli文件。