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

克隆完毕项目后 你会看到如下项目结构

image-20210114100103931
我们打开项目中的 win32_build.bat 以记事本方式打开

image-20210114100305894
这三个就是依赖的第三方库 我们可以 复制 这三个地址自己手动使用git 克隆下来

  • 准备构建依赖的第三方库
    在项目根目录下新建一个文件夹来存放第三方库的源码
    image-20210114100627207
    进入 thirdparty 文件夹 准备克隆 需要的第三方库
    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
    
    boost 库比较大 所以花费的时间会比较久一些 耐心等待一段时间即可
    • 下载Openssl 库 安装
      后续需要用到
    https://slproweb.com/products/Win32OpenSSL.html
    
    • 安装vs2015 编译环境

image-20210114103232284
image-20210114103320857

  • 编译 boost库

image-20210114103532336
使用 vs2019 x86 tools 命令行工具 进入 boost_1_58_0 目录
开始编译 生成编译工具

bootstrap.bat

image-20210114104418489

开始编译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

编译完成
image-20210114105200752

  • jsoncpp-0.10.6 构建
    使用 vs2019 打开 jsoncpp_lib_static.vcxproj

    image-20210114105451955

    点确定 升级到 v142

    image-20210114105556817

    修改运行库 多线程调试 (/MTd)

  • libevent-release-2.0.22 构建

    使用vs2019 打开 libevent.vcxproj

    image-20210114105732635
    点确定 升级到 v142
    image-20210114105813679
    修改运行库 多线程调试 (/MTd)

  • 编译 rocketmq-client-cpp
    进入 项目根目录下的 Win32 目录下 使用 vs2019 打开 rocketmq-client-cpp.sln
    和上面的库一样 升级到 v142 修改运行库 多线程调试 (/MTd)

    编译生成 选择静态库lib 默认是动态库

    image-20210114110521070
    在预处理中添加 WIN32_LEAN_AND_MEAN 后编译
    发现 错误一堆 不要慌让我们一步一步解决

    image-20210114111905201
    先解决找不到openssl头文件的问题 包含之前安装的openssl 的头文件路径
    以及 库文件路径

    image-20210114112120999

    image-20210114112256059
    无法打开源文件: “..\src\common\MQClient.cpp”: No such file or directory
    从项目源码中排除这个文件 重新添加 ..\src\common\DefaultMQClient.cpp 到项目中
    添加附加头文件

    image-20210114112939740
    再次重新编译

    image-20210114120102836
    继续报错 根据查看错误原因是找不到 boost::weak_ptr 解决办法引入

    #include <boost/smart_ptr/weak_ptr.hpp>
    

    再次编译 后继续报错

    image-20210114121057971
    查看原因是 void* 不能转换位 const char* 修改 (const char*)

    image-20210114121218100

    再次编译后 终于正确生成了

    image-20210114121340412

posted @ 2021-01-14 12:21  轻风々  阅读(1138)  评论(0编辑  收藏  举报