错误C2011:'MSXML2 :: IXMLDOMImplementation':'struct'类型重定义

bob*_*lex 5 c++ msxml3 msxml6 visual-studio-2008

我正在更改我的C++项目,它早在VC6中,现在正在迁移到VS 2008,使用MSXML 6而不是早期的MSXML 3.当代码在VC6中时,我们通过导入使用MSXML3

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

这被替换为

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

在此之后,当我编译项目时,我得到了这个和其他几个类似的错误错误C2011:'MSXML2 :: IXMLDOMImplementation':'struct'类型重新定义

上述错误位于msxml3.tlh文件中.

1)为什么仍然使用msxml3?

2)我将问题缩小到MSXML.h,它以某种方式自动包含在我的项目中.为什么是这样?

3)在MSXML.h中引用了哪个版本的MSXML?

4)为什么VC++会自动包含这么多头文件?如果我不想要包含一些头文件怎么办?

5)在c ++项目中使用MSXML6的正确方法是什么?#import,头文件?????

6)我该如何解决这个问题?

随时给我.net.更清洁.VC++项目很乱.

Jon*_*age 2

查看有关 MSXML 的 MS 文档

他们建议导入 .dll,因为您已经创建了几个 .thl 和 .tli 文件。确保您已删除这些内容。

确保所有包含目录都指向正确的位置。

绝对确保您没有在项目中的其他地方导入 msxml3。

要找到 msxml.h,请执行 CTRL + SHIFT + F 并在整个解决方案中搜索“msxml”<- 请注意缺少 .h,因为如果您正确导入了它,则应该按如下方式完成:

#include <msxml6.dll>
Run Code Online (Sandbox Code Playgroud)

尝试一些...