在Windows上安装xml2库与iconv库

要在Windows上成功的安装xml2库,首先需要安装其依赖库iconv。

一、运用vs2017来构建,iconv库。

1、首先从https://www.gnu.org/software/libiconv/#downloading上下载最新的iconv源码(我下载的是libiconv-1.16版本),并解压到本地目录;

2、解压后,用vs2017构建一个空白项目libiconv;

3、把libiconv-1.16\lib中的relocatable.h、relocatable.c、iconv.c复制到libiconv\libiconv中;

4、把libiconv-1.16\libcharset\lib中的localcharset.c复制到libiconv\libiconv中;

5、把libiconv-1.16\libcharset\include中的localcharset.h.build.in复制到libiconv\libiconv中,并重命名为localcharset.h;

6、在libiconv\libiconv下建立文件夹include; 

7、复制libiconv-1.16\include\iconv.h.build.in到libiconv\include,将其重命名为iconv.h;

8、复制libiconv-1.16\config.h.in到libiconv\include,将其重命名为config.h;

9、复制libiconv-1.16\lib中的所有头文件(*.h)和定义文件(*.def)到libiconv\include,注意不要覆盖7和8的两个文件;

10、把libiconv\include中的所有源文件和头文件添加到工程中去;

11、进入工程属性-->VC++目录,把libiconv\libiconv下的include目录添加到包含目录中;

12、修改iconv.c文件中的ICONV_CONST为const;

13、修改localcharset.h:

//#if @HAVE_VISIBILITY@ && BUILDING_LIBCHARSET
//#define LIBCHARSET_DLL_EXPORTED __attribute__((__visibility__("default")))
//#elif defined _MSC_VER && BUILDING_LIBCHARSET
//#define LIBCHARSET_DLL_EXPORTED __declspec(dllexport)
//#else
//#define LIBCHARSET_DLL_EXPORTED
//#endif
#ifdef BUILDING_LIBCHARSET
#define LIBCHARSET_DLL_EXPORTED __declspec(dllexport)
#elif USING_STATIC_LIBICONV
#define LIBCHARSET_DLL_EXPORTED
#else
#define LIBCHARSET_DLL_EXPORTED __declspec(dllimport)
#endif

14、注释掉config.h中的代码:

/* Define as good substitute value for EILSEQ. */
//#undef EILSEQ

15、修改iconv.h中的代码 :

//#if @HAVE_VISIBILITY@ && BUILDING_LIBICONV
//#define LIBICONV_DLL_EXPORTED __attribute__((__visibility__("default")))
//#elif defined _MSC_VER && BUILDING_LIBICONV
//#define LIBICONV_DLL_EXPORTED __declspec(dllexport)
//#else
//#define LIBICONV_DLL_EXPORTED
//#endif
//extern LIBICONV_DLL_EXPORTED @DLL_VARIABLE@ int _libiconv_version; /* Likewise */

#if BUILDING_LIBICONV
#define LIBICONV_DLL_EXPORTED __declspec(dllexport)
#elif USING_STATIC_LIBICONV
#define LIBICONV_DLL_EXPORTED
#else
#define LIBICONV_DLL_EXPORTED __declspec(dllimport)
#endif
extern LIBICONV_DLL_EXPORTED int _libiconv_version;
//#if @USE_MBSTATE_T@
//#if @BROKEN_WCHAR_H@
#if USE_MBSTATE_T
#if BROKEN_WCHAR_H
//#if @USE_MBSTATE_T@
#if USE_MBSTATE_T
//#if @HAVE_WCHAR_T@
#if HAVE_WCHAR_T
//extern LIBICONV_DLL_EXPORTED size_t iconv (iconv_t cd, @ICONV_CONST@ char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);
extern LIBICONV_DLL_EXPORTED size_t iconv(iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);

15、构建工程,即可得到libiconv.dll、libiconv.lib等,把这两个文件拷贝系统相应的目录中。

16、以上步骤虽然可以得到虽然可以成功得到libiconv库,但在编译xml2库时会提示IconvOpen、Iconv、IconvClose以及__imp_locale_charset等4个链接错误。这是由于1.16版本中,这几个函数的函数名变为了:iconv_open、iconv、iconv_close,所以可以通过改iconv的源文件或改xml2的源文件来消除这几个链接错误,我采取的是修改iconv的源文件。

17、修改iconv.h:

extern LIBICONV_DLL_EXPORTED iconv_t IconvOpen (const char* tocode, const char* fromcode);

18、修改iconv.c:

int IconvClose (iconv_t icd)
iconv_t IconvOpen (const char* tocode, const char* fromcode)
size_t Iconv (iconv_t icd,

19、修改localcharset.h:

//extern LIBCHARSET_DLL_EXPORTED const char * locale_charset (void);

20、此时再编译,生成的iconv库可以直接用于xml2库的编译安装。

二、xml2库的安装:

1、首先从ftp://xmlsoft.org/libxml2/上下载最新版本的xml2源码(我下载的是libxml2-2.9.10),并解压到当地文件夹;

2、以管理员身份运行VS2017的x64版的命令提示工具;

3、cd到libxml2-2.9.10\win32目录;

4、执行cscript config.js compiler=msvc prefix=C:\xml2;(安装目录中间不能有空格,暂时放到c的要目录,装完后可以拷贝到你想要放的地方)

5、执行nmake /f Makefile.msvc

6、执行nmake install。

安装完成!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值