当前位置: 首页 > news >正文

在windows下编译libiconv库

libiconv是一个基于GNU协议的开源库,主要用于解决多语言编码处理转换等应用问题。在linux系统使用比较方便,但是windows下使用需要进行源码编译。这里我是使用libiconv的1.15版本源码和VS2019默认工具集配置进行编译。

首先需要用VS2019创建一个空项目,根目录为libiconv。

在解压源码文件后,我以libiconv-1.15为根目录,需要拷贝几个文件到上面创建的空项目。

        libiconv-1.15/config.h.in  ->  libiconv/config.hlibiconv-1.15/libcharset/include/localcharset.h.in -> libiconv/localcharset.hlibiconv-1.15/libcharset/lib/localcharset.c -> libiconv/localcharset.clibiconv-1.15/include/iconv.h.in -> libiconv/iconv.hlibiconv-1.15/srclib/localcharset.h -> libiconv/localcharset.hlibiconv-1.15/lib(整个文件夹) -> libiconv/lib

将上面拷贝的文件添加到空项目中,lib文件夹中只需要添加iconv.c。

接着需要修改VS2019项目的一些属性

        项目属性 : 常规->配置类型->静态库选择(.lib)项目属性 : C/C++ ->附加包含目录填入$(ProjectDir);

最后修改编译出现的错误。

        1. 修改iconv.h文件,删除掉所有的 @ 符号 (14处)2. 修改iconv.h文件,[extern DLL_VARIABLE int _libiconv_version;](24行) 改为 [extern /* DLL_VARIABLE */ int _libiconv_version;]3. 修改iconv.h文件,[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);]4. 修改iconv.c文件,[size_t iconv (iconv_t icd, ICONV_CONST char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft)]改为[size_t iconv (iconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft)]4. 修改localcharset.c文件,注释  # include "configmake.h"5. 在项目属性 C/C++ -> 预处理器 -> 预处理器定义 增加_CRT_SECURE_NO_WARNINGS

此时编译可以成功,生成一个libiconv.lib库,体积大约3145K

http://www.lryc.cn/news/257087.html

相关文章:

  • html,css,开发知识,调试知识
  • Vulnerability: File Upload(Medium)--MYSQL注入
  • 短视频账号剪辑矩阵+无人直播系统源头开发
  • Python traceback模块:获取异常信息
  • 单点登录方案调研与实现
  • HarmonyOS应用开发者基础认证考试(稳过)
  • 日常开发日志
  • 【FMCW毫米波雷达设计 】 — FMCW波形
  • 力扣labuladong一刷day35天
  • Matlab 曲线动态绘制
  • Spark DataFrame和Dataset使用例子
  • CSS彩色发光液体玻璃
  • OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存
  • 小红书蒲公英平台开通后,有哪些注意的地方,以及如何进行报价?
  • 持续集成交付CICD:Jenkins配置Nexus制品上传流水线
  • C语言笔试例题_指针专练30题(附答案解析)
  • 【Vue+Python】—— 基于Vue与Python的图书管理系统
  • 智能成绩表 - 华为OD统一考试(C卷)
  • 【基于ESP32无线蓝牙上传电脑Excel透传数据】
  • Qt篇——QChartView实现鼠标滚轮缩放、鼠标拖拽平移、鼠标双击重置缩放平移、曲线点击显示坐标
  • 掌握VUE中localStorage的使用
  • 所有行业的最终归宿-我有才打造知识付费平台
  • 图的深度和广度优先遍历
  • 计算机毕业设计JAVA+SSM+springboot养老院管理系统
  • Flutter路由的几种用法
  • 力扣119双周赛
  • Redux,react-redux,dva,RTK
  • 基于Java SSM框架实现高校信息资源共享平台系统【项目源码+论文说明】计算机毕业设计
  • SpringMvc入坑系列(一)----maven插件启动tomcat
  • Leetcode—337.打家劫舍III【中等】