我正在尝试导入如下文件:
#import "C:/xxxx/Proj/msd60.tlb"
但它告诉我它无法打开源文件" C:/xxxx/Proj/msd60.tlh"
tlb文件实际存在于我指向它的位置。
在我看来,VS可以将tlb文件拆分为tlh文件(作为头文件)和tli文件(作为cpp文件)。所以发生了一些事情并使它无法创建一个tlh文件?但我不知道它是什么。同时,其他项目中的另一个cpp可以打开" msd60.tlb"。所以环境可能不存在问题。
如何解决?
答案 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"