windows下使用VS編譯libIconv庫
libiconv是將一種編碼格式轉換為另一種編碼格式的跨平臺開源庫,http://www.gnu.org/software/libiconv/可以檢視支援轉換的編碼型別。但是libiconv 的開發者並沒有釋出windows下的原始碼和庫,要想在windows下使用libiconv 庫,必須自己手動把libiconv 移植到windows平臺,具體步驟如下:
1、去http://ftp.gnu.org/pub/gnu/libiconv/下載原始碼包,本文使用的是libiconv-1.14.tar.gz
2、新建libiconv空的控制檯工程
(1)將下載的庫中lib資料夾下的所有檔案拷貝到工程目錄下
(2)將拷貝到工程目錄
(3)將庫中libcharset/lib/localcharset.c檔案拷貝到工程目錄下
(4)將庫中include資料夾下iconv.h.in檔案重新命名為iconv.h放在工程目錄下
3、工程中新增現有項,將 iconv.c ,localcharset.c 新增到工程中.
4、工程屬性->C/C++ –>附加包含目錄:$(ProjectDir);
5、工程屬性:常規->配置型別->靜態庫(.lib)
6、修改檔案中的BUG
(1) iconv.h :
1).刪除掉所有的 @ 符號 (14處)
2).修改25行: extern DLL_VARIABLE int _libiconv_version;改為 extern /*DLL_VARIABLE*/ int _libiconv_version;
3).修改83行:extern size_t iconv (iconv_t cd, ICONV_CONST char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t*outbytesleft);
改 為 extern size_t iconv (iconv_t cd, /*ICONV_CONST*/ char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);
(2)localcharset.c:
註釋掉76行: # include "configmake.h"
468行 : sprintf 改為 sprintf_s(buf, 2 + 10 + 1, "CP%u", GetACP());
7、編譯,並將編譯之後的libIconv.lib和iconv.h拷貝出來
這裡有現成VS2010工程,可以直接編譯出libIconv.lib