DOMDocument redefined问题
2015-12-09 17:04
405 查看
项目中用到Xercesc开发包来解析xml文件,其他程序里头都好着,今天在一个新建的工程中用到却出现编译失败的问题。
main.cpp代码如下:
查找发现vs自带的msxml.h中也定义有DOMDocument,而这个msxml.h也被包含于windows.h。
调整main.cpp
编译结果:...\include\msxml.h(9594) : error C2371: 'DOMDocument' : redefinition; different basic types.
看来必须要屏蔽掉msxml.h中也定义有DOMDocument相关内容,发现有两个宏都可以。
1. #define __DOMDocument_FWD_DEFINED__
2. #define WIN32_LEAN_AND_MEAN
__DOMDocument_FWD_DEFINED__ 这个宏具体信息还不得知,应该就是屏蔽使用vs自带的DOM吧,
WIN32_LEAN_AND_MEAN 这个宏就有点意思了,官方解释:
Non-MFC C++ and C applications can define WIN32_LEAN_AND_MEAN and any applicable NOservice defines, such as NOSOUND, to reduce their build times.
所以在用VS编译非MFC工程和一些简单工程时可以加上这个宏,以加快编译速度。
main.cpp代码如下:
#include <windows.h> ... #include "MetaXMLParser.h" class juggTest: public MetaXMLParser { public: juggTest(const char *filePath) : MetaXMLParser(filePath, true){;} ~juggTest(){;} };MetaXMLParser.h内容:
#include <xercesc/dom/DOM.hpp> #include <xercesc/parsers/XercesDOMParser.hpp> #include <xercesc/dom/DOMDocument.hpp> #include <xercesc/dom/DOMElement.hpp> #include <xercesc/util/XMLString.hpp> XERCES_CPP_NAMESPACE_USE class MetaXMLParser { protected: MetaXMLParser(const char *fileNmOrRootTag,bool rw); virtual ~MetaXMLParser(); protected: DOMDocument *_doc; ... };编译环境VS2005, 编译报错:..\MetaXMLParser.h(116) : error C2872: 'DOMDocument' : ambiguous symbol.
查找发现vs自带的msxml.h中也定义有DOMDocument,而这个msxml.h也被包含于windows.h。
调整main.cpp
#include "MetaXMLParser.h" #include <windows.h> ... class juggTest: public MetaXMLParser { public: juggTest(const char *filePath) : MetaXMLParser(filePath, true){;} ~juggTest(){;} };
编译结果:...\include\msxml.h(9594) : error C2371: 'DOMDocument' : redefinition; different basic types.
看来必须要屏蔽掉msxml.h中也定义有DOMDocument相关内容,发现有两个宏都可以。
1. #define __DOMDocument_FWD_DEFINED__
2. #define WIN32_LEAN_AND_MEAN
__DOMDocument_FWD_DEFINED__ 这个宏具体信息还不得知,应该就是屏蔽使用vs自带的DOM吧,
WIN32_LEAN_AND_MEAN 这个宏就有点意思了,官方解释:
Non-MFC C++ and C applications can define WIN32_LEAN_AND_MEAN and any applicable NOservice defines, such as NOSOUND, to reduce their build times.
所以在用VS编译非MFC工程和一些简单工程时可以加上这个宏,以加快编译速度。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- XML 与 JSON 优劣对比
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- C#针对xml基本操作及保存配置文件应用实例
- Ruby程序中创建和解析XML文件的方法
- Lua教程(二):C++和Lua相互传递数据示例
- asp下查询xml的实现代码
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法
- EBS xml publisher中文乱码问题及解决办法
- C#中的Linq to Xml详解
- C#操作XML文件实例汇总