我将我的C++项目更改为使用MSXML 6而不是早期的MSXML 3,这个项目以前在VC6中,现在被迁移到VS 2008。
# import "msxml3.dll"这被替换为
# import "msxml6.dll"在编译这个项目之后,我得到了这个错误和其他几个类似的错误C2011:‘MSXML2 2::IXMLDOMImplementation’:'struct‘类型重新定义
上面的错误在msxml3.tlh文件中。
1)为什么还在使用msxml3?
2)我将问题缩小到MSXML.h,它以某种方式自动包含在我的项目中。为什么会这样呢?
3) MSXML.h中引用的是哪个版本的MSXML?
4)为什么VC++会自动包含这么多头文件?如果我不希望包含一些头文件,该怎么办?
5)在MSXML6项目中使用c++的正确方法是什么?#导入、头文件?
6)如何解决这个问题?
随时给我.net。干净多了。一个VC++项目就是一团糟。
发布于 2009-06-11 09:33:38
看看MSXML上的MS篡改。
他们建议像导入.dll一样导入.thl和.tli文件。确保你删除了那些。
确保任何包含的目录指向正确的位置。
确保您没有在项目的其他地方导入msxml3。
要找到msxml.h do CTRL + SHIFT +F并搜索整个解决方案中的“msxml”<- -注意缺少.h,因为如果您已经正确导入了它,则应该按照以下方式完成:
#include <msxml6.dll>试试这些..。
发布于 2009-06-15 22:08:32
检查#import指令的语法。可以在导入指令(或rename_namespace)上使用rename属性重命名导入的元素。它将解决与重复元素的冲突。
见此处:在MSDN中
有时更改包含顺序(是的-通过注释掉包含语句和导入语句的不同顺序)
不要与MS的错误斗争,只要跨越它们;)
发布于 2009-06-12 08:08:41
我尝试重命名msxml.h并进行构建。这将显示包含msxml.h的文件。
https://stackoverflow.com/questions/980082
复制相似问题