错误 C2011:“MSXML2::IXMLDOMImplementation”:“struct”类型重新定义

Posted

技术标签:

【中文标题】错误 C2011:“MSXML2::IXMLDOMImplementation”:“struct”类型重新定义【英文标题】:Error C2011: 'MSXML2::IXMLDOMImplementation' : 'struct' type redefinition 【发布时间】:2009-06-11 09:02:52 【问题描述】:

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

# import "msxml3.dll"

替换为

# import "msxml6.dll"

之后,当我编译项目时,我得到了这个和其他几个类似的错误

上面的错误在msxml3.tlh文件中。

1) 为什么仍在使用 msxml3?

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

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

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

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

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

随时给我 .net。干净多了。 VC++ 项目是一团糟。

【问题讨论】:

【参考方案1】:

检查#import 指令的语法。您可以使用 import 指令(或 rename_namespace)上的 rename 属性重命名导入的元素。它将解决与重复元素的冲突。

请看这里:in MSDN

有时会更改包含顺序(是的 - 通过注释掉它们来尝试包含和导入语句的不同顺序)

不要与 MS 的错误作斗争,只要克服它们;)

【讨论】:

【参考方案2】:

看看the MS docoumentation on MSXML。

他们建议按照您的方式导入 .dll 将创建几个 .thl 和 .tli 文件。确保您已删除这些内容。

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

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

要找到 msxml.h,请按 CTRL + SHIFT + F 并搜索“msxml”的整个解决方案:

#include <msxml6.dll>

尝试一些...

【讨论】:

我已经清理了项目。 tlh 和 tli 文件会自动重新创建。我已经搜索了 msxml3 的整个解决方案,但什么都没有。都是 msxml6。【参考方案3】:

我会尝试重命名 msxml.h 并进行构建。这应该会告诉您包含 msxml.h 的文件。

【讨论】:

以上是关于错误 C2011:“MSXML2::IXMLDOMImplementation”:“struct”类型重新定义的主要内容,如果未能解决你的问题,请参考以下文章

C++/CLI:Public ref struct 生成 C2011:'class' 类型重新定义

Win10 VS2013 Compile Intro - C2011 Error

编译错误“'struct'类型重新定义”虽然它是它的第一个定义

几年前的c语言跟现在有啥不同吗?

远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。

Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误