c++ - 使用 importlib 属性时的 MIDL2015 警告

标签 c++ com visual-studio-2013 midl tlbimp

我有一个旧版 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/

相关文章:

c++ - 使用 std::move 进行 vector 构建优化

C#.Net4 : Properly disposing (dynamic) COM objects

javascript - JavaScript 语言遇到错误并已关闭。 (尝试过建议的链接)

c# - 如何在 Visual Studio 的 VisualBasic.Net 下开发 Android 应用程序?

C++ WINAPI 动态包装类

c++ - 在类中定义数组但大小在构造函数中确定

c++ - 修改代码以从 Windows 中的 PE 可执行文件检索双重签名信息?

c# - 为 ProgId 动词运行命令

internet-explorer - IE Com 对象,方法 .Navigate 和 .Navigate2 之间的区别

c# - 如何强制我在 Visual Studio 2013 中的项目始终以管理员身份运行?