expat是解析xml的一個工具,項目需要本人最近在使用,可以到點擊打開鏈接下載到expat包!
在用vs2010編譯生成靜態庫之前,需要在該工程的properties->c/c++->Preprocessor下設置Preprocessor Definitions如下:
_DEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
在將expat編譯生成靜態庫並被其他程序加載的過程,遇到一個問題,就是:
每次expat都能正常編譯生成靜態庫,但是在vs2010中被其他程序加載並調用expat的函數時總會報錯:
一般這種錯誤都是庫沒鏈接上!
所以一開始以爲是自己在vs中主程序工程裏的靜態庫加載路徑沒設置正確,仔仔細細查了半天沒問題,後來才發現如下解決辦法:
在expat_external.h文件中需要將
#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL 這一行改成
#define XMLPARSEAPI(type) type
不然你根本不知道XMLIMPORT 和XMLCALL這兩個宏會引導你的源代碼生成什麼樣的靜態庫,直接造成你在其他程序裏調用expat的函數時根本找不到正確的函數!!