zoukankan      html  css  js  c++  java
  • 如何使用Visual Studio构建libiconv

    参考博文:How to Build libiconv with Microsoft Visual Studio - CodeProject

    libiconv源码下载地址:libiconv - GNU Project - Free Software Foundation (FSF)

    目前最新版本为1.15,将下载的libiconv-1.15.tar.gz解压后得到libiconv-1.15

    新建Win32工程,名称为libiconv,应用类型为DLL,附加选项为空工程,点击完成

    libiconv-1.15lib中的relocatable.hrelocatable.ciconv.c复制到libiconvlibiconv

    复制libiconv-1.15libcharsetliblocalcharset.clibiconvlibiconv

    复制libiconv-1.15libcharsetincludelocalcharset.h.build.inlibiconvlibiconv,将其重命名为localcharset.h

    libiconv中创建文件夹include

    复制libiconv-1.15includeiconv.h.build.inlibiconvinclude,将其重命名为iconv.h

    复制libiconv-1.15config.h.inlibiconvinclude,将其重命名为config.h

    复制libiconv-1.15lib中的所有头文件(*.h)和定义文件(*.def)libiconvinclude

    libiconvlibiconv中的所有源文件和头文件添加到工程中

    注释localcharset.c中的代码

    /* Get LIBDIR. */
    //#ifndef LIBDIR
    //# include "configmake.h"
    //#endif

    修改iconv.c中的ICONV_CONSTconst

    localcharset.h中注释并添加代码

    //#if @HAVE_VISIBILITY@ && BUILDING_LIBCHARSET
    //#define LIBCHARSET_DLL_EXPORTED __attribute__((__visibility__("default")))
    //#else
    //#define LIBCHARSET_DLL_EXPORTED
    //#endif
    #ifdef BUILDING_LIBCHARSET
    #define LIBCHARSET_DLL_EXPORTED __declspec(dllexport)
    #elif USING_STATIC_LIBICONV
    #define LIBCHARSET_DLL_EXPORTED
    #else
    #define LIBCHARSET_DLL_EXPORTED __declspec(dllimport)
    #endif

    注释config.h中的代码

    /* Define as good substitute value for EILSEQ. */
    //#undef EILSEQ

    iconv.h中注释并添加代码

    //#if @HAVE_WCHAR_T@
    #if HAVE_WCHAR_T
    //#if @USE_MBSTATE_T@
    #if USE_MBSTATE_T
    //#if @USE_MBSTATE_T@
    //#if @BROKEN_WCHAR_H@
    #if USE_MBSTATE_T
    #if BROKEN_WCHAR_H
    //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);
    /*#if @HAVE_VISIBILITY@ && BUILDING_LIBICONV
    #define LIBICONV_DLL_EXPORTED __attribute__((__visibility__("default")))
    #else
    #define LIBICONV_DLL_EXPORTED
    #endif
    extern LIBICONV_DLL_EXPORTED @DLL_VARIABLE@ int _libiconv_version;*/ /* Likewise */
    #if BUILDING_LIBICONV
    #define LIBICONV_DLL_EXPORTED __declspec(dllexport)
    #elif USING_STATIC_LIBICONV
    #define LIBICONV_DLL_EXPORTED
    #else
    #define LIBICONV_DLL_EXPORTED __declspec(dllimport)
    #endif
    extern LIBICONV_DLL_EXPORTED int _libiconv_version;

    进入工程属性->VC++目录,在包含目录中添加$(SolutionDir)include

    构建工程即可得到库文件libiconv.dll、libiconv.lib

  • 相关阅读:
    网络基础知识-TCP/IP协议各层详解
    MySQL及其图形界面navicat的安装
    Python 浅谈编程规范和软件开发目录规范的重要性
    python 浅析模块,包及其相关用法
    spring batch中MyBatisPagingItemReader分页使用介绍
    eclipse中git插件使用
    oracle中查找某用户执行某张表的操作操作记录
    redis集群主流架构方案分析
    消息队列常见的 5 个应用场景
    Kafka vs RocketMQ——单机系统可靠性
  • 原文地址:https://www.cnblogs.com/buyishi/p/9319436.html
Copyright © 2011-2022 走看看