当我尝试导入" tlb"文件。 VS 2013表示它无法找到一个" thh"文件

时间:2016-03-16 05:23:57

标签: c++ visual-studio-2013 tlb

我正在尝试导入如下文件:

#import "C:/xxxx/Proj/msd60.tlb"

但它告诉我它无法打开源文件" C:/xxxx/Proj/msd60.tlh"

tlb文件实际存在于我指向它的位置。

在我看来,VS可以将tlb文件拆分为tlh文件(作为头文件)和tli文件(作为cpp文件)。所以发生了一些事情并使它无法创建一个tlh文件?但我不知道它是什么。同时,其他项目中的另一个cpp可以打开" msd60.tlb"。所以环境可能不存在问题。

如何解决?

2 个答案:

答案 0 :(得分:1)

我在VS2015中遇到与 msado20.tlb 相同的问题。但我在VS2013中遇到了同样的问题。经过一些研究,我读到VS中的绝对路径可能存在一些问题,最好尝试相对路径(这很麻烦)。

在我的情况下,项目位于不同的驱动器中,因此相对路径将非常长,因此我将msado20.tlb文件复制到我的项目文件夹并再次构建解决方案。在这种情况下,它工作。我知道它更像是一个黑客而不是一个解决方案,但它可能会帮助其他人。该指令如下所示:

#import "msado20.tlb" no_namespace rename("EOF", "adoEOF")

如果有人尝试相对路径,那么确定它有效是很有趣的。将文件复制到我的项目文件夹并不是一个解决方案,而是一个黑客

答案 1 :(得分:0)

您为MIDL编译器输出设置的属性可能存在问题。 在项目设置中,使用.tlb位置的相对路径而不是绝对路径。 Visual Studio有一个怪癖,它有时不尊重绝对路径。

可替换地 如果可能,请尝试再次手动创建.tlb。

REGASM.exe "C:\Pathtoyourdll\your.dll"