开篇提示:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如。
“该文引用自 CruiseYoung的:Visual Studio 2013编译libiconv-1.14
http://blog.csdn.net/fksec/article/details/40378469”
否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。
1 资料准备
1.1 参考资料:libiconv-1.14 for windows(里面包含msvs10(Visual Studio 2010)工程):
http://download.csdn.net/detail/travel981cn/7127889
How to Build libiconv with Microsoft Visual Studio:
http://www.codeproject.com/Articles/302012/How-to-Build-libiconv-with-Microsoft-Visual-Studio
winlibs/libiconv(里面包含msvs6、msvs9、msvs11工程):
1.2 官方信息https://github.com/winlibs/libiconv
网站:
https://savannah.gnu.org/projects/libiconv/
代码托管地址:
1.3 代码下载:http://git.savannah.gnu.org/cgit/libiconv.git
1.3.1 下载“libiconv for msvs”代码
注意:将代码解压或下载到“libiconv_msvc”,此处是为了和下面1.3.2避免目录冲突,无其他原因。地址:https://github.com/winlibs/libiconv如果用“TortoiseGit”工具下载地址:https://github.com/winlibs/libiconv.git
1.3.2 官方“libiconv”最新源代码
此处个人推荐用“TortoiseGit”工具下载地址:http://git.savannah.gnu.org/cgit/libiconv.git
2 编译准备
2.1 将下载到的官方最新代码,即“libiconv”目录下的所有文件,拷贝到“libiconv_msvc\source”目录并覆盖。2.2 修改“libiconv_msvc\source\lib\iconv.c”:在
#include <iconv.h>
语句后添加以下语句
#ifndef ICONV_CONST
# define ICONV_CONST
#endif
2.3 修改“libiconv_msvc\source\lib\flags.h”:在
#define ei_iso2022_jp2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
语句后添加以下语句
#define ei_iso2022_jpms_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
3 编译
3.1 用Visual Studio 2013打开解决方案“libiconv_msvc\MSVC11\libiconv.sln”3.2 对工程属性作如下更改:
3.2.1 工程libiconv_dll
3.2.1.1 配置属性-->常规-->常规-->目标文件名
由“$(ProjectName)”改为以下设置:Debug:iconvDRelease:iconv
3.2.1.2 配置属性-->常规-->项目默认值-->字符集
统一改为“使用多字节字符集”
3.2.1.3 配置属性-->C/C++-->预处理器-->预处理器定义
将其中的“INSTALLPREFIX”、“INSTALLDIR”、“LIBDIR”三项的值统一定义为“"c:\\iconv"”,即:INSTALLPREFIX="\\iconv"; INSTALLDIR="c:\\iconv"; LIBDIR="c:\\iconv";
3.2.1.4 配置属性-->C/C++-->预编译头-->预编译头
统一改为“不使用预编译头”
3.2.1.5 配置属性-->C/C++-->输出文件-->程序数据库文件名
统一改为$(IntDir)$(TargetName).pdb
3.2.1.6 配置属性-->连接器-->常规-->输出文件
统一改为$(OutDir)$(TargetName)$(TargetExt)
3.2.1.7 配置属性-->连接器-->调试-->生成程序数据库文件
统一改为$(OutDir)$(TargetName).pdb
3.2.1.8 配置属性-->连接器-->高级-->导入库
统一改为$(OutDir)$(TargetName).lib
3.2.2 工程libiconv_static
3.2.2.1 配置属性-->常规-->常规-->目标文件名
由$(ProjectName)改为以下设置:Debug:iconvSDRelease:iconvS
3.2.2.2 同3.2.1.2~3.2.1.53.2.2.3 配置属性-->库管理器-->常规-->输出文件
统一改为$(OutDir)$(TargetName)$(TargetExt)
4 使用
include:iconv.hDynamic:
Macro: #define LIBICONV_DLL
Debug:
lib: iconvD.libdll: iconvD.dllpdb: iconvD.pdb
Release:
Static:lib: iconv.libdll: iconv.dllpdb: iconv.pdb
Debug:
lib: iconvSD.libpdb: iconvSD.pdb
Release:
lib: iconvS.libpdb: iconvS.pdb
5 整理后的工程
托管地址:https://github.com/CruiseYoung/libiconv_msvc