rocketmq-cpp-client Visual Studio 2019 编译
rocketmq-cpp-client Visual Studio 2019 编译
rocketmq-cpp-client
是rocketmq c++版本的 所以我们C++ 开发者使用此项目
构建
- 获取项目
//克隆项目
git clone https://github.com/apache/rocketmq-client-cpp.git
克隆完毕项目后 你会看到如下项目结构
我们打开项目中的 win32_build.bat
以记事本方式打开
这三个就是依赖的第三方库 我们可以 复制 这三个地址自己手动使用git 克隆下来
- 准备构建依赖的第三方库
在项目根目录下新建一个文件夹来存放第三方库的源码
进入thirdparty
文件夹 准备克隆 需要的第三方库
boost 库比较大 所以花费的时间会比较久一些 耐心等待一段时间即可git clone https://github.com/jsj020122/jsoncpp-0.10.6.git git clone https://github.com/jsj020122/boost_1_58_0.git git clone https://github.com/jsj020122/libevent-release-2.0.22.git git clone https://github.com/jsj020122/zlib-1.2.3-src.git
- 下载Openssl 库 安装
后续需要用到
https://slproweb.com/products/Win32OpenSSL.html
- 安装vs2015 编译环境
- 下载Openssl 库 安装
- 编译 boost库
使用 vs2019 x86 tools 命令行工具 进入 boost_1_58_0
目录
开始编译 生成编译工具
bootstrap.bat
开始编译boost库
debug 编译命令
bjam.exe address-model=32 --with-serialization --with-atomic --with-log --with-locale --with-iostreams --with-system --with-regex --with-thread --with-date_time --with-chrono --with-filesystem link=static threading=multi variant=debug runtime-link=static
release 编译命令
bjam.exe address-model=32 --with-serialization --with-atomic --with-log --with-locale --with-iostreams --with-system --with-regex --with-thread --with-date_time --with-chrono --with-filesystem link=static threading=multi variant=release runtime-link=static
编译完成
-
jsoncpp-0.10.6 构建
使用 vs2019 打开jsoncpp_lib_static.vcxproj
点确定 升级到 v142
修改运行库
多线程调试 (/MTd)
-
libevent-release-2.0.22 构建
使用vs2019 打开 libevent.vcxproj
点确定 升级到 v142
修改运行库多线程调试 (/MTd)
-
编译 rocketmq-client-cpp
进入 项目根目录下的Win32
目录下 使用 vs2019 打开rocketmq-client-cpp.sln
和上面的库一样 升级到 v142 修改运行库多线程调试 (/MTd)
编译生成 选择静态库lib 默认是动态库
在预处理中添加WIN32_LEAN_AND_MEAN
后编译
发现 错误一堆 不要慌让我们一步一步解决
先解决找不到openssl头文件的问题 包含之前安装的openssl 的头文件路径
以及 库文件路径
无法打开源文件: “..\src\common\MQClient.cpp”: No such file or directory
从项目源码中排除这个文件 重新添加..\src\common\DefaultMQClient.cpp
到项目中
添加附加头文件
再次重新编译
继续报错 根据查看错误原因是找不到 boost::weak_ptr 解决办法引入#include <boost/smart_ptr/weak_ptr.hpp>
再次编译 后继续报错
查看原因是 void* 不能转换位 const char* 修改 (const char*)再次编译后 终于正确生成了