visual studio 2019下进行apr、apr-iconv、apr-util编译

环境准备

开发环境Windows

开发工具Visual Studio 2019

依赖的库:

准备工作:

  • 将apr、apr-iconv、apr-util解压,并将文件夹重命名将版本号去掉,如下图所示:
    Alt 图一

  • 执行expat安装程序,安装完成后,目录结构如下所示:

    Alt 图二

    Bin目录下包含编译已经编译好的.lib静态库和.dll动态库,Source目录下包含Expat的源码。

编译

  1. 首先进入apr-util文件夹下,使用vs2019打开aprutil.dsw文件,如下图所示:

    Alt 图三

    点击确定按钮。

    需要按照如下步骤进行编译:

    • apr
    • apriconv
    • aprutil
    • libapr
    • libapriconv
    • libaprutil

    我们使用vs直接编译libaprutil即可,编译器会自动按照顺序编译完成。我们将工具栏的Debug改为Release、x86。属性的配置面板也改为Release。如下图所示:

    Alt 图八

  2. 配置,编译时会出现如下错误:

    Alt 图四

解决办法:在apr\include文件夹下找到apr.hw文件,以文本方式打开,找到宏定义“#define _WIN32_WINNT 0x0501”,将0x0501改为0x0600。

再次编译libaprutil,会出现如下错误:

ALT 图五

这是由于我们没有配置expat的include头文件以及静态库。

首先将expat的头文件引进来,按照下图步骤配置:

Alt 图六

然后我们将expat的静态库引进来,如下图所示:

第一步:

Alt 图七

第二步:

Alt 图九

至此配置完成,我们再次进行编译,编译成功。

Alt 图十

在各个文件夹下的Release目录下可以找到编译后产生的库。

在编译过程中可能会出现“找不到apr_escape_test_char.h头文件”错误,解决方法,可以自己新建一个头文件,内容如下:

/* this file is automatically generated by gen_test_char, do not edit. "make include/private/apr_escape_test_char.h" to regenerate. */
#define T_ESCAPE_SHELL_CMD     (1)
#define T_ESCAPE_PATH_SEGMENT  (2)
#define T_OS_ESCAPE_PATH       (4)
#define T_ESCAPE_ECHO          (8)
#define T_ESCAPE_URLENCODED    (16)
#define T_ESCAPE_XML           (32)
#define T_ESCAPE_LDAP_DN       (64)
#define T_ESCAPE_LDAP_FILTER   (128)

static const unsigned char test_char_table[256] = {
    224,222,222,222,222,222,222,222,222,222,223,222,222,223,222,222,222,222,222,222,
    222,222,222,222,222,222,222,222,222,222,222,222,6,16,127,22,17,23,49,17,
    145,145,129,80,80,0,0,18,0,0,0,0,0,0,0,0,0,0,16,87,
    119,16,119,23,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,23,223,23,23,0,23,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,23,23,23,17,222,222,222,222,222,222,222,222,222,222,222,222,222,
    222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,
    222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,
    222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,
    222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,
    222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,
    222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222 
};

最后,如果编译不通过,还是报错,根据错误找到原因,依次解决。

参考资料

vs添加include,lib,dll库文件

编译ActiveMQ-CPP库遇到的那点事


   转载规则


《visual studio 2019下进行apr、apr-iconv、apr-util编译》 anhua 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
CppUnit编译_VS 2019 CppUnit编译_VS 2019
简介CppUnit是用于C ++编程语言的单元测试框架模块。它允许对C源代码以及C ++ 进行单元测试,而只需最少的源代码修改。它由Michael Feathers于2000年左右启动,最初是Windows 的JUnit的C ++ 端口,并
2020-01-27
下一篇 
C++ STL 标准模板库 C++ STL 标准模板库
简介标准模板库(英文:Standard Template Library,缩写:STL),是一个C++软件库,其中包含4个组件,分别为算法、容器、函数、迭代器。模板是C++程序设计语言中的一个重要特征,而标准模板库正是基于此特征。标准模板库
2020-01-19
  目录