我有一个旧版 Visual Studio 解决方案,其中包含多个项目(已升级到 Visual Studio 2013)。其中一个项目生成一个 COM DLL。然后,该 DLL 中的 TLB 通过 importlib 属性导入到另一个项目的 IDL 文件中。当 MIDL 编译器尝试编译依赖项目的 IDL 文件时,它会生成以下警告:
warning MIDL2015: failed to load tlb in importlib
当我使用 TLB 文件的完整路径时,它可以工作。
我尝试添加 MIDL -> 附加包含目录属性的路径,但我认为这仅适用于 IDL、 header 和 ACF 文件 ( /I switch )。
我还尝试了“链接器”->“附加库目录”属性,但这也不起作用。
解析 importlib 属性时 MIDL 使用什么搜索路径?
最佳答案
这很不直观,midl.exe 没有命令行选项来指定要搜索的目录。请注意 midl.exe 在处理 importlib("stdole2.tlb")(存储在 c:\windows\system32 中的文件)时从来不会出现问题。
项目 + 属性、VC++ 目录,将存储 .tlb 的路径附加到可执行目录
设置中。完成并添加“c:\temp”后,它应该类似于“c:\temp;$(ExecutablePath)”。
不太确定会赢得很多奖品。将 .tlb 生成或存储在更可预测的路径中,以便您可以在 importlib 指令中使用相对路径,从而在一年后减少令人头疼的意外。
关于c++ - 使用 importlib 属性时的 MIDL2015 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24750337/