错误 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'类型重新定义”虽然它是它的第一个定义
远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。