首页 > 解决方案 > ImportLib 在 MIDL 中引用完整路径

问题描述

我发现使用这种语法,我会得到一个编译错误:

importlib("MSADDNDR.dll");

给出的错误是:

error MIDL2337 : unsatisfied forward declaration : _IDTExtensibility2 [ Coclass '_Extension'  ]

但这是一个谎言,有点。查看前面的输出,我们看到:

warning MIDL2015 : failed to load tlb in importlib: : MSADDNDR.dll

因此,如果我们更改属性以包含完整路径:

importlib("C:\Program Files (x86)\Common Files\Designer\MSADDNDR.dll");

它现在可以正确编译......但是......这是引用一个 32 位 DLL。假设我想交叉编译?所以我/amd64为 MIDL 指定了选项。这仍然编译成功。我找不到任何可能表明使用可能错误的位数 DLL 的完整路径importlib会导致问题的文档。

如果存在潜在问题,或者是否有更好的方法来避免嵌入完整路径,其他人是否可以确认或否认?

有趣的是,当我在 中加载生成的.tlb文件时oleview,完整路径不再存在;这表明这不是问题,但我想确保确实如此。

标签: commidl

解决方案


推荐阅读