为什么我在导入 msxml6 时没有得到 C4192?

Mic*_* J. 4 c++ visual-studio-2015

我们被指示消除所有 3 级警告,并被特别告知要解决 C4192。

我的代码确实属于导致 C4192 的“错误代码”示例

#import "msxml6.dll" named_guids
Run Code Online (Sandbox Code Playgroud)

并且“好代码”很容易实现

#import "msxml6.dll" exclude("ISequentialStream","_FILETIME")named_guids
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我没有收到这个警告。我正在导入 msxml6.dll 的 6.30.7601.18431 版本,无论我做什么,这个警告都不会出现。

我还再次导入了它,指定了 no_auto_exclude 选项,但在生成的 tli 和 tlh 文件中找不到对 ISequentialStream 或 _FILETIME 的引用。

我将简单地更新以使用“好”代码并继续,但我仍然想知道发生了什么。

小智 5

这是一个特别的问题,因为新版本的 MSXML6.0 更改了声明,尤其是从 Win10 操作系统开始。

我们已经在遗留代码库中遇到了此警告消息,其中包含您在问题中提到的 'bad code' 。

在您的情况下,您的系统具有旧版本的 MSXML6.DLL(存在于“C:\Windows\System32 或 SysWow64”中)。

希望这可以使您的查询更加准确。