Windows下使用VS2019编译libiconv-1.16
Windows下使用VS2019编译libiconv-1.16
参考了 https://blog.csdn.net/zhouguangcai8/article/details/105270657,在其上做了精减与额外说明
获取libiconv-1.16源代码并配置项目
- 下载libiconv-1.16源代码并解压到目录libiconv-1.16
链接地址:https://ftp.gnu.org/pub/gnu/libiconv - 使用VS2019创建空项目
准备编译
1.准备编译源文件
- 将 libiconv-1.16\lib目录下的 relocatable.h、relocatable.c 、iconv.c 三个文件复制到项目目录下
- 将 libiconv-1.16\libcharset\lib\localcharset.c 复制到项目目录下
- 将libiconv-1.16\libcharset\include\localcharset.h.build.in复制到项目目录下,并重命名为localcharset.h
- 在工程目录下创建include目录,
- 将 libiconv-1.16\include\iconv.h.build.in复制到include目录,并重命名为iconv.h
- 将libiconv-1.16\config.h.in拷贝到include目录下,并重命名为 config.h
- 将 libiconv-1.16\lib目录下所有的 .h 和 .def文件拷贝到include目录下
2.配置项目
- 配置项目为静态库(根据自己需求选择静态库或者动态库)
- 把刚刚创建的include目录路径添加附加包含目录
- 添加两个预处理定义
USING_STATIC_LIBICONV(使用静态库才添加,不使用就不要添加)
_CRT_SECURE_NO_WARNINGS (防止使代码中的sprintf等函数报错)
3.修改报错的源代码
- localcharset.h 第21-27行原本为:
#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 LIBICONV_EXPORTS
#define LIBCHARSET_DLL_EXPORTED __declspec(dllexport)
#elif USING_STATIC_LIBICONV
#define LIBCHARSET_DLL_EXPORTED
#else
#define LIBCHARSET_DLL_EXPORTED __declspec(dllimport)
#endif
- iconv.h 第25-32行原本为:
#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 */
修改为:
#ifdef LIBICONV_EXPORTS
#define LIBICONV_DLL_EXPORTED __declspec(dllexport)
#elif USING_STATIC_LIBICONV
#define LIBICONV_DLL_EXPORTED
#else
#define LIBICONV_DLL_EXPORTED __declspec(dllimport)
#endifextern LIBICONV_DLL_EXPORTED int _libiconv_version; /* Likewise */
第91行原本为:
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);
去掉第109、110、130、177行多余的@符号
@USE_MBSTATE_T@ 改为 USE_MBSTATE_T
@BROKEN_WCHAR_H@ 改为 BROKEN_WCHAR_H
@HAVE_WCHAR_T@ 改为 HAVE_WCHAR_T
- iconv.c 250行
ICONV_CONST 改为 const // 还有一处ICONV_CONST需要改,忘了在哪里了
- config.h 第30行注释掉
//#undef EILSEQ
编译
切换VS项目的配置Release/Debug x86/x64,生成自己所需的库。
Windows下使用VS2019编译libiconv-1.16相关推荐
- 在Windows下使用vs2019编译libjpeg库
一.库的编译 1.下载 libjpeg 源码,这里我下载的是 jpegsr9e.zip 2.解压源码 3.进入解压后的目录,找到 makefile.vs 文件,用文本编辑器打开并编辑,找到 语句 #! ...
- windows下用vs2019编译fltk 1.3.5
1.下载源码.下载地址https://www.fltk.org/software.php 2.解压下载的压缩包. 3.启动visual studio,打开 -/fltk-1.3.xxxx/ide/Vi ...
- 手把手教你在windows下源码编译Open3D
文章目录 前言 1.编译环境 2.编译步骤 3.编译中的bug 3.1 下载超时问题,ispc.pybind11.open3d_sphinx_theme等 3.2 boringssl 3.3 Dire ...
- mysql 源码 sln_在windows下使用vs2013编译和调试mysql源代码
在windows下使用vs2013编译和调试mysql源代码 1. 准备工作 1)OS:win10 + VS2013 2)mysql 源码(windows版):mysql-5.6.25.zip 3)p ...
- 【C#】C#中使用GDAL3(一):Windows下超详细编译C#版GDAL3.3.0(VS2015+.NET 4+32位/64位)
转载请注明原文地址:https://www.cnblogs.com/litou/p/15004877.html 总目录 (一)Windows下超详细编译C#版GDAL3.3.0(VS2015+.NET ...
- 在windows下写makefile编译代码
From: http://blog.163.com/xjming487@126/blog/static/212951352007625114849843/ 在windows下写makefile编译代码 ...
- 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集
上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...
- [转]cscope在windows下使用mingw编译的方法
cscope在windows下使用mingw编译的方法 http://blog.csdn.net/mslk/archive/2007/05/06/1598513.aspx cscope在wi ...
- Windows下用CMake编译JsonCpp及配置(适合新手)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 JsonCpp是什么? JSON是一种轻量级的数据交换格式.它可以表示数字.字符串.有序的值序列 ...
最新文章
- 熊猫直播Rancho发布系统构建之路
- 【OCR技术系列之二】文字定位于切割
- PowerDesigner教程系列(三)概念数据模型
- 基于 Spring Boot 和 Spring Cloud 实现微服务架构
- ABAP动态取得数据的方法
- Graphpad Prism计算IC50
- python 知识点总结
- 超低内阻mos管_FHU100N03低压MOS管保障榨汁机电路正常运行!
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第25篇]使用特殊的素数定义GF(p)和GF(2^n)的方法
- linux-获取帮助-ls命令-date命令-man命令
- JAVA中集合输出的四种方式
- 机器学习-吴恩达-笔记-3-正则化
- 2008-2011大股东增持专题
- thinkphp 下载txt文档
- talib如何安装方法
- 万能平板刷机软件_一加万能工具包(手机万能刷机工具)
- 如何用Java写QQ机器人 v2.0
- 华为nova5iotg功能使用_华为nova5有OTG功能吗?可以连接U盘和鼠标吗[多图]
- 第一章概述-------第一节--1.1计算机网络在信息时代中的作用
- 如何学会做一名优秀的下属
热门文章
- 上链第四条路 迅雷、百度、阿里接连打造区块链普惠基础设施
- GTHE3开发记录1
- 2005-2022中国企业对外直接投资、OFDI海外投资明细、中国全球投资追踪数据CGIT(含非建筑施工类问题投资)
- 喜欢java更喜欢旅游.....
- 腾讯 android安全,腾讯安全玄武实验室:市面主流安卓应用存在用户数据“被克隆”风险...
- Java配置Path和JAVA_HOME(windows)
- 高教社杯2007年A题--Leslie算法,matlab实现
- 我的开源夏令营--刚刚过去的两个月
- 问题--在matplotlib的散点图中如何给不同种类颜色的点加标签?
- 信息安全-网络设备安全(一)