libxml2 iconv 在windows下的生成指南
libxml2 + iconv + msvc 在windows下生成使用库
为了跨平台的解析xml,偶然获得Linux下比较好用的一个xml的解析库libxml2
,使用起来确实比较简单,方便;但移植到windows下后发下使用上存在问题:
无法解析格式位GB2312
类型的XML文件,但由于一些外部因素,Windows下必须使用GB2312
格式
在网上查看了诸多教程,有很多编译生成libxml2
库的文章,但都不支持iconv
,仔细阅读README
后,终于生成了可用的libxml2.lib
库,记录下来备用
操作系统:windows 7 x64
版本:libiconv-1.15, libxml2 Github版本
Visual Studio版本:vs2015
Cygwin:x64
以下操作皆为生成x64位库,32位的基本类似,可以查看具体的README。
一、生成iconv.lib
库
下载 libiconv-1.xx.tar.gz
在1.15中,需要阅读README.windows
,在1.16中需要阅读INSTALL.windows
,其余版本的类似,找到windows版本的安装说明。
三种方式可以编译安装libiconv
库,我这里使用的是第二种,使用MSVC
安装,这个是VS种安装的C/C++工具链,一般都已经安装。
There are three ways to create binaries of this package for Microsoft Windows:
- Native binaries, built using the mingw tool chain. 2) Native
- binaries, built using the MS Visual C/C++ tool chain. 3) Binaries for
- the Cygwin environment.
根据说明:
This recipe requires also a Cygwin environment (with 'bash', the common POSIXcommands, and 'make') as a build environment. Building with 'nmake' is notsupported.For this, you need to install* Cygwin (from https://cygwin.com/),* some packages available from the Cygwin package installer:makeYou also need the scripts 'ar-lib' and 'compile' fromhttps://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/ar-lib;hb=HEADhttps://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/compile;hb=HEADrespectively.They may also be included in this package, in directory 'build-aux/'.Save them; the instructions below assume that you stored them in $HOME/msvc/.Make them executable:chmod a+x ar-lib compile
这里需要安装Cygwin
安装Cygwin
时需要选择make
安装包,同时需要下载ar-lib
和 compile
,并且将这两个安装包放到$HOME/msvc/
路径下,如果没有msvc路径,需要创建,还需要改变相应的权限chmod a+x ar-lib compile
。
操作完成后,打开Cygwin
的bash
界面,根据需要,选择x64或者x86版本的需求进行操作,也可以将所有的命令写成一个shell脚本: x64.sh
,一次性执行,这里以x64为例,必须要注意的时,在编写脚本的时候,一定要使用的时unix/linux
风格的文件类型,windows和linux的换行符不同,在Cygwin中执行会出问题:
#x64 版本:filename: x64.sh
# Windows C library headers and libraries.
WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
LIB="${WindowsCrtLibDir}x64;$LIB"# Windows API headers and libraries.
WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
LIB="${WindowsSdkLibDir}x64;$LIB"# Visual C++ tools, headers and libraries.
VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
PATH=`cygpath -u "${VCINSTALLDIR}"`/bin/amd64:"$PATH"
INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
LIB="${VCINSTALLDIR}"'\lib\amd64;'"${LIB}"export INCLUDE LIB
PATH=/usr/local/msvc64/bin:$PATH
export PATH#win32_target=_WIN32_WINNT_WINXP # for MSVC 9.0
#win32_target=_WIN32_WINNT_VISTA # possibly for MSVC >= 10.0
win32_target=_WIN32_WINNT_WIN7 # possibly for MSVC >= 10.0
#win32_target=_WIN32_WINNT_WIN8 # possibly for MSVC >= 10.0./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/msvc64 \CC="$HOME/msvc/compile cl -nologo" \CFLAGS="-MD" \CXX="$HOME/msvc/compile cl -nologo" \CXXFLAGS="-MD" \CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc64/include" \LDFLAGS="-L/usr/local/msvc64/lib" \LD="link" \NM="dumpbin -symbols" \STRIP=":" \AR="$HOME/msvc/ar-lib lib" \RANLIB=":"
make
make check
make install
在Cygwin
的命令行中执行命令:
./x64.sh
编译执行的时间会比较久,执行完成后,在/usr/local/msvc64/
路径下的include
文件夹中会生成iconv.h
头文件,在lib
文件夹中会生成iconv.dll.lib
库文件,需要将其重命名未iconv.lib
以供使用,至此iconv
静态库生成完毕,此外,在libiconv-1.xx/lib/.libs/
路径下会生成iconv-2.dll
文件,此文件也需保留。
二、 生成libxml2
库
首先在Github中下载了源文件后,解压,进入路径libxml2-master/win32
中,查看README文件,文件中比较详细的说明了如何进行操作,可以将所有的操作步骤写成一个批处理命令的脚本,即:.bat
或.cmd
文件: x64_debug_iconv_yes.bat
:: filename : x64_debug_iconv_yes.bat
:: 配置运行的环境, x64
call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat":: 先清除之前安装的所有配置,如果第一次,可以不执行
"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\nmake.exe" clean:: 配置信息
cscript configure.js compiler=msvc iconv=yes ^prefix=c:\libxml2\x64\debug ^bindir=c:\libxml2\x64\debug\bin ^incdir=c:\libxml2\x64\debug\include ^libdir=c:\libxml2\x64\debug\lib ^sodir=c:\libxml2\x64\debug\dll ^include=c:\cygwin64\usr\local\msvc64\include ^lib=c:\cygwin64\usr\local\msvc64\lib ^debug=yes:: 编译
"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\nmake.exe" /f Makefile.msvc > debug_x64.log:: 安装
"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\nmake.exe" /f Makefile.msvc install >> debug_x64.logpause
关于cscript configure.js
的说明:
- 可以使用
cscript configure.js help
查看具体的帮助说明 prefix
表示需要将安装的文件存放的位置bindir
表示安装的可执行exe
存放位置,默认放在$prefix\bin
incdir
表示安装的头文件存放的位置,默认放在$prefix\include
libdir
表示生成的静态库存放的位置,默认放在$prefix\lib
sodir
表示生成的动态库存放的位置,默认放在$prefix\bin
include
表示生成libxml2
库需要依赖的库的头文件存放的位置,特指iconv
头文件的路径lib
表示生成libxml2
库需要依赖的库存放的位置,特指iconv.lib
的路径
在cmd
中执行:
x64_debug_iconv_yes.bat
如果输出没有错误,则执行成功,生成libxml2.dll libxml2.lib库,如果出错,可以查看debug_x64.log
日志文档。
三、 libxml2 库使用问题
- 当XML文件是GB2312格式时,运行时需要额外添加动态库
iconv-2.dll
四、 参考文章
- win10 vs2015 libxml2编译 各种版本
libxml2 iconv 在windows下的生成指南相关推荐
- ReactNative windows下打包生成安卓apk
create-react-native-app 运行npm run eject后根目录会产生一个andriod目录和ios目录.里面就是运行打包的配置文件. 如果你是用react-native-cli ...
- windows下批量生成文件夹
在windows环境下如果想要批量生成文件夹: 1.创建一个记事本文件 2.首行大写MD 3.后面加上你想创建的文件夹的名字,每个名字之间有空格 4.退出记事本并保存 5.将记事本文件后缀改为bat文 ...
- Windows下文本生成图像AI画图尝鲜体验
工具库 transformers 的开源方 Hugging Face 发布了一个专注于 diffuser 模型的开源库,我们可以基于它,仅仅通过几行代码就开始生成自己的艺术作画.不过这个 diffus ...
- Windows下如何生成数字证书
1.Makecert.exe<证书创建工具>使用说明:http://msdn.microsoft.com/zh-cn/library/bfsktky3.aspx 2.SignTool.ex ...
- Windows下Qt生成可执行文件.exe
正常编译后的.exe文件是运行不了的. 步骤: 1.先用release模式编译文件. 2.将release文件夹下的.exe文件留下,其他文件全部删掉.(也可以新建一个文件夹,只把.exe文件放进去) ...
- Windows下LM-Hash与NTLM-Hash生成原理
LM-Hash与NTLM-Hash 在windows下通过SAMInside提取到的密码Hash时,可以看到有两条,分别是LM-Hash和NT-Hash,这是对同一个密码的两种不同的加密方式,下面对其 ...
- 在Windows下使用CMake+MinGW搭建C/C++编译环境
转载自:https://blog.csdn.net/isscollege/article/details/78038921?locationNum=8&fps=1 1 工具介绍 作为一款执行效 ...
- Windows 下 Let's Encrypt申请证书及使用
为什么80%的码农都做不了架构师?>>> https://www.cnblogs.com/asminfo/p/6801558.html Let's Encrypt是一个免费的. ...
- windows下安装libxml2
windows下安装libxml2 (一)首先必须安装libiconv (1)下载路径http://gnuwin32.sourceforge.net/packages/libiconv.htm,选择& ...
最新文章
- python处理图片文件_python 学习(二)处理图片、TXT文档
- mysql创建表选择字段的时候下尽量小
- java dispatchevent_dispatchEvent(AWTEvent) 分派事件
- 机器学习:使用numpy实现数据增强(Data Augmentation)
- 算法训练 字符删除 c语言
- 获取Spring中的bean,使得线程安全性得到保障
- Excel实用函数大全(名称、功能、说明、用法、举例)
- linux基础--grep以及模式正则表达式
- javascript跨域、iframe跨域访问
- Xcode 11.7(12.4)/13.2的signing和sandbox配置截图对比
- python邮箱密码_python 模拟登陆163邮箱
- 太一星晨:负载均衡啃不动的骨头交给应用交付
- WMS库存盘点流程 WMS库存盘点计划
- servlet3 文件上传
- 快解析助力餐饮业实时访问后台管理系统
- 首席新媒体运营黎想教程:可复用的社群运营+直播流程
- python儿童宣传-为什么让孩子学Python会这么火?
- 一键清理系统垃圾文件脚本: clean.bat
- 计算机学科论文期刊,计算机学科期刊文章参考文献 计算机学科论文参考文献数量是多少...
- 软驱光碟安装linux系统,无光驱和软驱安装debian的方法