在编译PDAL的过程中,需要用到LibXML2这个库,在参考了诸位大神的博客后,历经几天终于编译成功。
考虑到LibXML2又使用了LibICONV这个库,现在把这2个库编译过程发布,与大家共享。
参考文章:1)https://blog.csdn.net/xiao_lxl/article/details/80592897
2)https://blog.csdn.net/longji/article/details/53404101
版本:libiconv 版本1.15 / LibXML2版本2.9.8 / 源代码官网下载
附件:
1)libiconv完整VS2013项目,https://download.csdn.net/download/tgzhang/10640610
2)LibXML2版本2.9.8完整编译批处理文件:https://download.csdn.net/download/tgzhang/10640614
LiblCONV1.15的X64位LIB库 编译过程
一、新建项目
- 用vs2013新建一个静态库(Lib)项目,项目名:ICONV
项目路径D:\libICONV1.15\
二、拷贝文件:
2、拷贝 libICONV_SRC\libiconv-1.15\lib\*.* 到 D:\libICONV1.15\ ICONV
3、拷贝 libICONV_SRC\lib\localcharset.c 到D:\libICONV1.15\ ICONV
4、拷贝 libICONV_SRC\include\iconv.h.in 到D:\libICONV1.15\ ICONV
5、拷贝 libICONV_SRC\include\ localcharset.h.in 到D:\libICONV1.15\ ICONV
三、文件改名
将config.h.in 改名为 config.h
将Iconv.h.in改名为 iconv.h
将localcharset.h.in 改名为 localcharset.h
四、修改错误
1)iconv.h
(1)删掉所有的@符号(14处)。将“@”查找替换为“”即可(仅仅去掉@)。
(2)修改25行
extern DLL_VARIABLE int _libiconv_version; /* Likewise */ 修改为
extern /*DLL_VARIABLE*/ int _libiconv_version; /* Likewise */
(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.h
(1)注释掉 76行 #include “configmake.h”
(2)511行:
printf(
修改为
sprintf_s (buf, "CP%s", pdot + 1)
(3)521行:
printf(
修改为
sprintf_s (buf, "CP%u", GetACP ());
五、在工程中添加 iconv.c localcharset.c 到工程中
如果提示找不到iconv.h 或 localcharset.h,则可以:
- 将 #include <iconv.h>修改为 #include “iconv.h”
- 将#include < localcharset.h>修改为 #include “localcharset.h”
- 考虑将iconv.h也加入到工程中。
六、将平台修改为X64,即可编译得到debug和Release版本的LIB文件
相应的完整VS2013项目,可以在https://download.csdn.net/download/tgzhang/10640610下载
LIBXMLS 2.9.8的windows X64位LIB库 编译过程
完整编译批处理文件:https://download.csdn.net/download/tgzhang/10640614
DEBUG版本 DLL和LIB编译过程
用windows的命令窗口,在源码win32目录中,依次输入一下命令
rem 初始化VS的x64版本编译环境
"c:\Program Files (x86)\Microsoft Visual Studio 12.0\vc\bin\amd64\vcvars64.bat" 这一行需要根据你实际vs版本替换。
nmake clean
rem 动态连接库x64 debug版
cscript configure.js compiler=msvc iconv=yes prefix=c:\workspace\libxml2\x64\Debug include=c:\workspace\libxml2\x64\Debug\include lib=c:\workspace\libxml2\x64\Debug\lib debug=yes
nmake /f Makefile.msvc install > "debug.log"
Release版本 DLL和LIB编译过程
用windows的命令窗口,在源码win32目录中,依次输入一下命令
"c:\Program Files (x86)\Microsoft Visual Studio 12.0\vc\bin\amd64\vcvars64.bat" 这一行需要根据你实际vs版本替换。
nmake clean
rem 动态连接库x64 release版
cscript configure.js compiler=msvc iconv=yes prefix=c:\workspace\libxml2\x64\release include=c:\workspace\libxml2\x64\release\include lib=c:\workspace\libxml2\x64\release\lib debug=no
nmake /f Makefile.msvc install > releasex.log