我发现使用这种语法,我会收到编译错误:
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。假设我想交叉编译?所以我为MIDL指定了/amd64
选项。这仍然成功编译。我找不到任何可能暗示使用importlib
的可能错误的位数DLL的完整路径的文档会导致问题。
是否有其他人可以确认或否认是否存在潜在问题,或者是否有更好的方法可以避免嵌入完整路径?
有趣的是,当我在.tlb
中加载生成的oleview
文件时,完整的路径已经不存在了;这表明这不是问题,但我想确保是这样。