利用VS編譯libiconv庫


參考文章:http://blog.csdn.net/ghevinn/article/details/9834119

關於中文字符編碼問題,這篇文章里面講的很詳細-->http://www.tuicool.com/articles/yIjiqm

UTF-8編碼是用以解決國際上字符的一種多字節編碼,是在互聯網上使用最廣的一種unicode的實現方式。它包含全世界所有國家需要用到的字符,是國際編碼,通用性強。一般來說UTF-8可應用於大多數場景,尤其是互聯網上,而中文編碼主要使用GBK編碼,因此這就有了GBK和UTF-8的相互轉換需求。在linux平台下 libiconv 庫來實現這種轉換,參見libiconv 官網:http://www.gnu.org/software/libiconv/

但美中不足的是libiconv 的開發者並沒有發布windows下的源碼和庫,所以要想在windows下使用libiconv 庫,必須自己手動把libiconv 移植到windows平台,具體步驟如下:

 

1->去官網下載libiconv 源碼包,本文使用的是libiconv-1.14.tar.gz

2->新建libiconv工程

(1)將下載的庫中lib文件夾下的所有文件拷貝到這個文件夾下

(2)將烤入到Iconv文件夾下的config.h.in重命名為config.h

(3)將庫中libcharset/lib/localcharset.c文件拷貝到這個文件夾下

(4)將庫中include文件夾下iconv.h.in文件重命名為iconv.h放在Iconv文件夾下

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, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);

(2)localcharset.c:

      注釋掉76行:  # include "configmake.h"  

  468行 :   sprintf  改成   sprintf_s ,參數也要修改,具體怎么改,看了代碼一眼就知道 -->sprintf_s(buf, 2 + 10 + 1, "CP%u", GetACP());

7:生成解決方案,可能會報幾個警告.

 如果你覺得上述過程很麻煩,這里有現成VS2013工程,可以直接編譯:http://download.csdn.net/detail/tangxin19930330/9556870


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM