Windows编译ActiveMQ-cpp-Library

编译环境、编译工具:

win10系统

Visual Studio 2017(需要安装windows SDK 8.1组件)

cmake 3.18

 

准备组件:

1.OpenSSL 1.0.2u

可以自己编译,也可以下载第三方编译好的

我使用的是第三方OpenSSL下载地址:http://slproweb.com/products/Win32OpenSSL.html

 

2.apr-1.7.0、apr-util-1.6.1、apr-iconv-1.2.2(下载地址:https://apr.apache.org/)一定要下载win32-src,否则会导致编译各种问题

 

3.cppunit-1.15.1(下载地址:https://www.freedesktop.org/wiki/Software/cppunit/

 

4.expat-2.2.9(下载地址:https://github.com/libexpat/libexpat/releases

 

5.ActiveMQ-Cpp-library-3.9.0(下载地址:https://activemq.apache.org/components/cms/download/

 

 

编译步骤:

一、编译expat:

1.解压expat-2.2.9.tar.gz

 

2.命令行进入expat-2.2.9目录

 

3.创建vs项目目录:mkdir build

 

4.使用cmake创建vs解决方案:cmake .. -G "Visual Studio 15"

 

5.cmake输出如下信息时,表示vs解决方案创建完毕

 

6.使用vs2017打开expat/build目录下的expat.sln,打开解决方案,使用Release x86模式编译libexpat项目,在expat/build/Release目录下得到编译好的libexpat.lib和libexpat.dll动态链接库文件,头文件目录即/expat/lib目录

 

二、编译CppUnit:

1.解压cppunit-1.15.1.tar.gz

2.用VS2017打开/cppunit/examples目录下的examples2008.sln解决方案。打开过程中,由于examples2008.sln是VS2008创建的项目,所以VS2017会提示项目需要迁移升级,确认即可。

 

如果升级期间,提示某些项目需要“覆盖项目及其导入的属性表”,选择否。否则会导致关键的项目无法正确载入

 

升级完毕后,需要我们确认选择更高级的工具集,确认选择即可

 

3.使用Release x86编译关键项目“cppunit_dll”。在/cppunit/lib目录下,有我们生成的cppunit_dll.lib和cppunit_dll.dll动态链接库,头文件目录在/cppunit/include

 

三、安装OpenSSL

将我们下载的OpenSSL-win32-1.0.2安装到指定目录即可(我是安装在C盘根目录下)

 

四、编译apr、apr-util、apr-iconv组件

1.解压arp-1.7.0-win32-src.zip、apr-iconv-1.2.2-win32-src.zip、apr-util-1.6.1-win32-src.zip三个压缩包到同一个目录下,并删除目录后的版本号(同目录,删除文件夹后的版本号非常关键)

目录结构如下(可以按我的目录结构解压源码):

 

2.用vs2017打开/apr-util/aprutil.dws解决方案,此时仍旧会提示我们解决方案是旧版本,需要迁移升级,参考之前的步骤确认升级即可(项目更改升级时间会比较长,需要等待一会,期间vs2017可能会出现假死)

 

3.按顺序依次使用Release x86模式编译 libapr、libapriconv、libaprutil。

4.编译arp中,会出现如下apr_arch_misc.h报错

这个问题卡了很久,后来在外网才找到解决方案,修改/apr/include/apr.hw 89行

#define _WIN32_WINNT 0x0501改为#define _WIN32_WINNT 0x0600

 

5.编译libaprutil时,需要先提前设置之前编译好的expat的include目录和lib目录,将libarputil的链接-输入中的$(XML_PARSER).lib换成libexpat.lib

 

6.编译完之后,在apr/Relase、apr-iconv/Release、apr-util/Release目录下分别找到对应的dll和lib,保存即可

 

PS:在编译activemq过程中,有的环境提示缺少cppunit,有的不缺少,我只遇到过一台PC环境需要,所以只做了说明,不会加入到具体步骤当中

 

 

至此,编译ActiveMQ-cpp-library的准备工作全部完成

下面就是最后一部,编译ActiveMQ-cpp-library组件

 

1.解压activemq-cpp-library-3.9.0-src.zip为activemq-cpp-library,打开/activemq-cpp-library/vs2010-build

 

2.由于解决方案是vs2010的,所以又要升级迁移解决方案

 

3.迁移升级完成后,编译模式,我选择ReleaseSSL_DLL(支持ssl、动态链接库)、win32模式

 

4.将我们需要的active-cpp项目,添加之前编译的apr、apr-iconv、apr-util的头文件目录和库目录,以及OpenSSL的头文件和库目录地址(我是用的openSSL的VC动态库)。active-cpp项目已经帮我们添加好了链接-输入的libapr-1.lib,所以不需要我们再添加了

 

5.编译过程中,会提示无法解析外部符号“__imp__CryptReleaseContext@8”,“__imp__CryptGenRandom@12”,“__imp__CryptAcquireContextA@20

网上查了一下,这是因为没有引入WinDDK里的Advapi32.lib库的原因

手动在项目链接-输入中添加Advapi32.lib

重新编译,大功告成!

 

 

库备份

1.将active-cpp-library/src/main目录复制出来,这个目录就是mq的头文件

2.将active-cpp-library/vs2010-build/Win32/ReleaseSSL-DLL里的activemq-cpp.dll、activemq-cpp.lib复制出来

3.将arp运行库中的libapr-1.lib和libapr-1.dll复制出来

以上所有文件备份到一个目录当中,这就是我们以后基于activeMQ开发所需要完整的头文件、链接库

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在你的项目中使用编译好的 ActiveMQ-CPP 库文件(activemq-cpp-library-3.9.5),你需要进行以下步骤: 1. 下载 ActiveMQ-CPP 库文件:从 ActiveMQ-CPP 的官方网站或其他可靠来源下载编译好的库文件。确保下载的库文件与你的项目的目标平台和编译器版本相匹配。 2. 创建一个新的 Visual Studio 项目:打开 Visual Studio,创建一个新的 C++ 项目,或者使用你已有的项目。 3. 设置项目属性:在 Visual Studio 中,打开你的项目属性页。选择 "C/C++" -> "常规" 选项卡,将 "附加包含目录" 设置为包含 ActiveMQ-CPP 头文件的目录。 4. 设置库文件路径:在 "链接器" -> "常规" 选项卡中,将 "附加库目录" 设置为包含 ActiveMQ-CPP 库文件的目录。 5. 添加链接库:在 "链接器" -> "输入" 选项卡中,将 "附加依赖项" 添加为 `activemq-cpp-library-3.9.5.lib` 文件名。 6. 拷贝库文件:将 `activemq-cpp-library-3.9.5.dll` 文件拷贝到你的项目输出目录(例如,调试或发布目录)中,以便在运行时可以找到该 DLL 文件。 7. 在代码中使用库:在你的代码中包含 ActiveMQ-CPP 的头文件,并使用其中的功能。确保你的代码正确链接并调用了 ActiveMQ-CPP 的函数。 完成上述步骤后,你的项目应该能够使用 ActiveMQ-CPP 库文件。请注意,这只是一个简单的指导,具体步骤可能会因你的项目配置和需求而有所不同。建议参考 ActiveMQ-CPP 的官方文档或示例代码,以获取更详细的集成指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值