环境:

win7 32位旗舰版,VS2010,tinyxml_2_6_2版本

1、下载tinyxml,并解压到tinyxml文件夹下

 

2、生成动态链接库

原生的Tinyxml只支持静态库(没有在.h文件中找到任何的导出类或导出函数),并且生成的静态库比较大,Release下大约2.5M。

打开VS2010 -> 新建win32项目 -> 下一步 -> 勾选"DLL” ->  完成

将tinyxml文件夹下所有的.h/.cpp文件复制到改工程目录下

打开tinyxml.h头文件,定义以下宏

#define TIXML_USE_STL//使用STL
#define TIXML_DLL//DLL项目
#define TIXML_DLL_EXPORT//DLL导出

#ifdef TIXML_DLL


#ifdef TIXML_DLL_EXPORT

#define TIXML_DLL_API _declspec(dllexport)

#else

#define TIXML_DLL_API _declspec(dllimport)

#endif


#else


#define TIXML_DLL_API


#endif

在所有需要导出类前面加上TIXML_DLL_API宏

class TIXML_DLL_API TiXmlVisitor
{
};

class TIXML_DLL_API TiXmlNode : public TiXmlBase
{
};

class TIXML_DLL_API TiXmlAttribute : public TiXmlBase
{
};

class TIXML_DLL_API TiXmlAttributeSet
{
};

class TIXML_DLL_API TiXmlElement : public TiXmlNode

{
};

class TIXML_DLL_API TiXmlComment : public TiXmlNode
{
};

class TIXML_DLL_API TiXmlText : public TiXmlNode
{
};

class TIXML_DLL_API TiXmlDeclaration : public TiXmlNode
{
};

class TIXML_DLL_API TiXmlUnknown : public TiXmlNode
{
};

class TIXML_DLL_API TiXmlDocument : public TiXmlNode
{
};

class TIXML_DLL_API TiXmlHandle
{
};

class TIXML_DLL_API TiXmlPrinter : public TiXmlVisitor
{
};

为了在保存xml文件的时候为UTF-8编码,在TiXmlDocument类的三个构造函数中设置useMicrosoftBOM=true

TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT )
{
	tabsize = 4;
	useMicrosoftBOM = true;//保存为UTF-8格式
	ClearError();
}

TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT )
{
	tabsize = 4;
	useMicrosoftBOM = true;//保存为UTF-8格式
	value = documentName;
	ClearError();
}


#ifdef TIXML_USE_STL
TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT )
{
	tabsize = 4;
	useMicrosoftBOM = true;//保存为UTF-8格式
    value = documentName;
	ClearError();
}
#endif

编译生成Debug和Release,这里需要同时生成,我在上面的DLL导出函数接口中使用了非内置类型(如std::string等等),必须使用相同版本的lib和dll库,否则会出现莫名其妙的错误.

3、使用Tinyxml动态链接库

新建一个控制台应用程序

直接编译生成Debug和Release版本

将编译好的Debug下的tinyxml.lib和tinyxml.dll复制到当前工程下的Debug目录下

将编译好的Release下的tinyxml.lib和tinyxml.dll复制到当前工程下的Release目录下

删除tinyxml.h头文件中定义的宏#define TIXML_DLL_EXPORT

下一章会说编码(UNICODE/UTF-8/ASCII)如何转换的问题,并以CMarkup的操作xml形式对Tinyxml进行封装,使用起来更加方便^^

相关文章:

  • 2021-07-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-18
  • 2021-08-04
  • 2021-11-13
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-19
  • 2022-01-23
  • 2021-06-15
  • 2021-07-23
  • 2022-12-23
  • 2021-09-12
相关资源
相似解决方案