利用VS编译libiconv库
参考文章:http://blog.csdn.net/ghevinn/article/details/9834119
关于中文字符编码问题,这篇文章里面讲的很详细-->http://www.tuicool.com/articles/yIjiqm
UTF-8编码是用以解决国际上字符的一种多字节编码,是在互联网上使用最广的一种unicode的实现方式。它包含全世界所有国家需要用到的字符,是国际编码,通用性强。一般来说UTF-8可应用于大多数场景,尤其是互联网上,而中文编码主要使用GBK编码,因此这就有了GBK和UTF-8的相互转换需求。在linux平台下 libiconv 库来实现这种转换,参见libiconv 官网:http://www.gnu.org/software/libiconv/
但美中不足的是libiconv 的开发者并没有发布windows下的源码和库,所以要想在windows下使用libiconv 库,必须自己手动把libiconv 移植到windows平台,具体步骤如下:
1->去官网下载libiconv 源码包,本文使用的是libiconv-1.14.tar.gz
2->新建libiconv工程
(1)将下载的库中lib文件夹下的所有文件拷贝到这个文件夹下
(2)将烤入到Iconv文件夹下的config.h.in重命名为config.h
(3)将库中libcharset/lib/localcharset.c文件拷贝到这个文件夹下
(4)将库中include文件夹下iconv.h.in文件重命名为iconv.h放在Iconv文件夹下
3、工程中添加现有项,将 iconv.c ,localcharset.c 添加到工程中.
4、工程属性->C/C++ –>附加包含目录:$(ProjectDir);
5、工程属性:常规->配置类型->静态库(.lib)
6、修改文件中的BUG
(1) iconv.h :
1).删除掉所有的 @ 符号 (14处)
2).修改25行: extern DLL_VARIABLE int _libiconv_version;
为 extern /*DLL_VARIABLE*/ int _libiconv_version;
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.c:
注释掉76行: # include "configmake.h"
468行 : sprintf 改成 sprintf_s ,参数也要修改,具体怎么改,看了代码一眼就知道 -->sprintf_s(buf, 2 + 10 + 1, "CP%u", GetACP());
7:生成解决方案,可能会报几个警告.
如果你觉得上述过程很麻烦,这里有现成VS2013工程,可以直接编译:http://download.csdn.net/detail/tangxin19930330/9556870
利用VS编译libiconv库的更多相关文章
- 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)
平台:Windows7,Visual C++ 2010 1. 引言 实验室的一个项目,用到OpenGL进行实时绘制,还用到一些其他的库,一个困扰我很久的问题就是编译时遇到的各种符号未定义,符号重定义之 ...
- 【转】Android 源码下利用jni编译自己的项目(参考系统development/samples/SimpleJNI)
原文网址:http://blog.csdn.net/qiuxiaolong007/article/details/7860481 记于正文前:环境是ubuntu10.10,android 源码是2.0 ...
- 怎样学习使用libiconv库
怎样学习使用libiconv库 - My Study My Study About My Learn or Study etc. 怎样学习使用libiconv库 By Cnangel on Febru ...
- Windows环境下编译Assimp库生成Android可用的.so或.a文件
在做项目过程中需要使用Assimp这个3D模型读取库来读取obj格式的模型,因为项目是基于Android平台,采用NDK开发,所以就打算编译Assimp库并生成.so文件.本文使用Assimp-v.5 ...
- libiconv库的安装和使用
1.libiconv包的下载路径 包的下载页面http://www.gnu.org/software/libiconv/ 2.编译安装libiconv库 $tar zxvf libiconv-1.14 ...
- Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6
书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...
- ndk学习8: 编译动态库
目录: 手工编译动态库 ndk-build编译动态库(Eclipse环境) 手工编译静态库 老规矩还是先手工操作,知其然并知其所以然 需要用到的核心命令: gcc -g -c -fpic -W ...
- oracle 利用flashback将备库激活为read wirte(10g 及上)
oracle 利用flashback将备库激活为read wirte(10g 及上) 环境: OS: CENTOS 6.5 X64 DB: ORACLE 10.2.0.5 主库操作: SQL> ...
- 编译jsoncpp库以及要注意的问题
原创文章,转载请注明原作者与本文原始URL. 版本:jsoncpp-src-0.5.0.zip简介:jsoncpp是用cpp实现的json库,可以拼装,解析,生成json串.我们要把他编译成动态库.这 ...
随机推荐
- 一个DIV三列布局100%高度自适应的好例子(国外)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W ...
- UIBarButtonItem不能获取frame
在使用KxMenu这个厉害的控件做竖直列表的时候,发现UIBarButtonItem不能获取到frame,UIBarButtonItem是NSObject的子类,他不是一个uiresponed或者ui ...
- BZOJ3680 : 吊打XXX
本题就是找一个受力平衡的点 我们一开始假设这个点是(0,0) 然后求出它受到的力,将合力正交分解后朝着合力的方向走若干步,并不断缩小步长,一步步逼近答案 #include<cstdio> ...
- POJ 1548 (二分图+最小路径覆盖)
题目链接:http://poj.org/problem?id=1548 题目大意:给出一张地图上的垃圾,以及一堆机器人.每个机器人可以从左->右,上->下.走完就废.问最少派出多少个机器人 ...
- 【BZOJ】2178: 圆的面积并
http://www.lydsy.com/JudgeOnline/problem.php?id=2178 题意:给出n<=1000个圆,求这些圆的面积并 #include <cstdio& ...
- 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...
- 【BZOJ】1603: [Usaco2008 Oct]打谷机(水题+dfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=1603 这种水题... dfs没话说.. #include <cstdio> #inclu ...
- SSH整合所需的jar包
Spring3.1+Hibernate3+Struts2的最新整合所需要的jar包 Spring的基本jar包: 1.org.springframework.web-3.1.4.RELEASE.jar ...
- 李洪强-C语言1-指针
C语言指针 前导程序 一.基本知识点 Int a=10; Int *p;//定义一个int类型的指针 P=&a;//指针变量p指向了变量a *p=20;//使用指针不通过变量直接修改变量a ...
- 微课程--Android--Activity组建与Intent
安卓的四大基本组件 Activity是经常使用的组件 1 展示用户界面 2 响应用户操作 Service 1 在后台长时间运行 2 没有用户界面 ContentProvider 1 管理和共享应用数据 ...