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