分类目录归档:Open Source Soft

开源软件无所不能!

使用Microsoft Visual Studio编译libiconv

作者:余俊峰 tobecontinued.cn

源代码在Microsoft Visual Studio 2015下成功编译,保存在https://git.oschina.net/tbc/winiconv。

1. 从http://ftp.gnu.org/pub/gnu/libiconv/下载iconv库libiconv-1.14.tar.gz。

2. 新建win32静态库工程,winiconv。复制iconv库lib/*.h, *.c, *.def, *.gperf文件到工程文件夹src/下。

3. 复制iconv库lib/config.h.in到工程文件夹下,改名为config.h。

4. 复制iconv库libcharset/lib/localcharset.c到工程文件夹下。

5. 复制iconv库include/iconv.h.in到工程文件夹下,改名为iconv.h。

6. 复制iconv库scrlib/localcharset.h到工程文件夹下。

7. 添加工程文件夹src/下的所有文件到工程。工程“属性页”-“C/C++-”-“附加包含目录”增加当前文件夹“.”。

8. 修改 iconv.h,如下:

line 25
//extern @DLL_VARIABLE@ int _libiconv_version;
extern int _libiconv_version;

line 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);

line 101-102
//#if @USE_MBSTATE_T@

//#if @BROKEN_WCHAR_H@
#if USE_MBSTATE_T
#if BROKEN_WCHAR_H

line 122
//#if @USE_MBSTATE_T@
#if USE_MBSTATE_T

line 169
//#if @HAVE_WCHAR_T@
#if HAVE_WCHAR_T

9. 修改localcharset.c,如下:

line 77-79
//#ifndef LIBDIR
//# include “configmake.h”
//#endif

10. 把有main函数的.c文件删掉:

genaliases.c
genaliases2.c
genflags.c
gentranslit.c

成功。