在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

相关推荐
lucky670710 小时前
Windows 上彻底卸载 Node.js
windows·node.js
编程小白202610 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
凯子坚持 c12 小时前
CANN 性能剖析实战:从原始事件到交互式火焰图
windows·microsoft
开开心心就好12 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
獨枭13 小时前
PyCharm 跑通 SAM 全流程实战
windows
仙剑魔尊重楼13 小时前
音乐制作电子软件FL Studio2025.2.4.5242中文版新功能介绍
windows·音频·录屏·音乐·fl studio
PHP小志14 小时前
Windows 服务器怎么修改密码和用户名?账户被系统锁定如何解锁
windows
专注VB编程开发20年15 小时前
vb.net datatable新增数据时改用数组缓存
java·linux·windows
仙剑魔尊重楼15 小时前
专业音乐制作软件fl Studio 2025.2.4.5242中文版新功能
windows·音乐·fl studio
rjc_lihui16 小时前
Windows 运程共享linux系统的方法
windows