1. 程式人生 > >windows下使用VS編譯libIconv庫

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)將拷貝到工程目錄

下的config.h.in重新命名為config.h

(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