在windows下编译libiconv库

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

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

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

复制代码
        libiconv-1.15/config.h.in  ->  libiconv/config.h

        libiconv-1.15/libcharset/include/localcharset.h.in -> libiconv/localcharset.h

        libiconv-1.15/libcharset/lib/localcharset.c -> libiconv/localcharset.c

        libiconv-1.15/include/iconv.h.in -> libiconv/iconv.h

        libiconv-1.15/srclib/localcharset.h -> libiconv/localcharset.h

        libiconv-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

相关推荐
开开心心就好5 小时前
图片校正漂白工具永久免费,矫正实时预览
网络·人工智能·windows·计算机视觉·计算机外设·电脑·excel
Whoami!5 小时前
⓫⁄₁₁ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 未加引号服务路径漏洞利用(上)
windows·网络安全·信息安全·未加引号服务路径
MyBFuture6 小时前
编程实战:相机连接与参数设置指南
windows·c#·visual studio·vision pro·联合编程
Don't Look Down6 小时前
windows 脱机安装wsl 及 Docker Desktop 集成
windows·docker·容器
开开心心就好6 小时前
免费批量抠图软件大模型,复杂倒影精准去除
网络·windows·pdf·计算机外设·电脑·硬件架构·材料工程
Blue桃之夭夭6 小时前
【工具教程】Windows 下十六进制编辑器 HxD 安装与使用指南(附下载链接)
windows·编辑器
qq_278787776 小时前
Windows 本地 EasySwoole 项目(Docker Desktop 挂载运行+热加载配置)
windows·docker·容器·easyswoole
Yvonne爱编码17 小时前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
南宫码农17 小时前
我的电视 - Android原生电视直播软件 完整使用教程
android·开发语言·windows·电视盒子
哈基米~南北绿豆19 小时前
虚拟机体验:在Windows/Mac上运行鸿蒙PC开发环境
windows·macos·harmonyos