2

我有一个旧版 Visual Studio 解决方案,其中包含多个项目(已升级到 Visual Studio 2013)。其中一个项目会生成一个 COM DLL。然后通过 importlib 属性将来自该 DLL 的 TLB 导入到另一个项目的 IDL 文件中。当 MIDL 编译器尝试编译依赖项目的 IDL 文件时,它会生成以下警告:

警告 MIDL2015:无法在 importlib 中加载 tlb

当我使用 TLB 文件的完整路径时,它可以工作。

我尝试将路径添加到 MIDL -> Additional Include Directories 属性,但我认为这仅适用于 IDL、标头和 ACF 文件(/I 开关)。

我也尝试过 Linker -> Additional Library Directories 属性,但这也不起作用。

解析 importlib 属性时 MIDL 使用什么搜索路径?

4

1 回答 1

4

这是不直观的,midl.exe 没有命令行选项来指定要搜索的目录。注意 midl.exe 从来没有遇到过 importlib("stdole2.tlb") 的问题,这是一个存储在 c:\windows\system32 中的文件。

项目 + 属性,VC++ 目录,将存储 .tlb 的路径附加到Executable Directories设置中。完成并添加“c:\temp”后,它应该看起来像“c:\temp;$(ExecutablePath)”。

不太确定会赢得很多奖品。将 .tlb 生成或存储在更可预测的路径中,这样您就可以在 importlib 指令中使用相对路径,从而减少一年后令人头疼的意外。

于 2014-07-15T09:49:45.447 回答