關於expat第三方源碼生成靜態庫並被其他程序加載的總結

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的函數時根本找不到正確的函數!!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章