我正在更改我的C ++项目,该项目早于VC6,现在正在迁移到VS 2008,使用MSXML 6代替早期的MSXML 3。 当代码在VC6中时,我们通过导入它来使用MSXML3
# import "msxml3.dll"
这被替换为
# import "msxml6.dll"
在我编译项目之后,我得到了这个以及其他几个类似的错误 错误C2011:'MSXML2 :: IXMLDOMImplementation':'struct'类型重新定义
以上错误位于msxml3.tlh文件中。
1)为什么msxml3仍在使用?
2)我将问题缩小到MSXML.h,它以某种方式自动包含在我的项目中。为什么是这样?
3)MSXML.h中引用了哪个版本的MSXML?
4)为什么VC ++会自动包含这么多头文件?如果我不想要包含一些头文件怎么办?
5)在c ++项目中使用MSXML6的正确方法是什么? #import,头文件?????
6)如何解决此问题?
随时给我.net。更清洁。 VC ++项目很乱。
答案 0 :(得分:2)
检查#import指令的语法。您可以使用import directive(或rename_namespace)上的rename属性重命名导入的元素。它将解决与重复元素的冲突。
见这里:in MSDN
有时更改包含顺序(是 - 通过注释来尝试包含和导入语句的不同顺序)
不要与MS的错误作斗争,只要越过它们;)
答案 1 :(得分:1)
查看the MS docoumentation on MSXML。
他们建议您按原样导入.dll将创建几个.thl和.tli文件。确保你已删除它们。
确保所有包含目录指向正确的位置。
绝对确定您没有在项目的其他位置导入msxml3。
要找到msxml.h,请执行CTRL + SHIFT + F并在整个解决方案中搜索“msxml”< - 请注意缺少.h,因为如果您正在正确导入它,则应该将其作为如下:
#include <msxml6.dll>
尝试一下......
答案 2 :(得分:0)
我尝试重命名msxml.h并进行构建。这应该显示包含msxml.h的文件。