全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
消息队列 MQ

C/C++ SDK 环境准备

更新时间:2017-08-28 10:03:27   分享:   

用 C++ SDK 方式接入 MQ,需要完成以下准备工作。

注意:

  • 代码里涉及到的 Topic, Producer ID, Consumer ID,需要到 MQ 控制台上创建。 Message Tag 可以完全由应用自定义,具体创建过程可参考 申请MQ资源

  • 使用 MQ 服务的应用程序需要部署在阿里云 ECS 上。

下载 SDK

CPP 支持 Windows 和 Linux 两个跨平台的 SDK,而且接口完全一致。下载依赖 SDK 包链接:

下载完成后进行解压,会有如下目录结构:

  • example/
  • include/
  • lib/
  • SDK_GUIDE.pdf
  • changelog

上面的目录和文件的作用如下:

  • demo: 包含了一个创建好的 Windows C++ 演示 Demo。

  • example:包含了普通消息发送、Oneway 消息发送、顺序消息发送、普通消息消费、顺序消息消费等例子,Linux 下还包含了 Makefile 用于 example 的编译和管理。

  • include: 用户自己编写的程序需要 include 的头文件。

  • lib: Linux SDK 子目录如下,分别是 64 的静态库和动态库。

    1. lib-boost-share/
    2. libonsclient4cpp.so
    3. lib-boost-static/
    4. libonsclient4cpp.a

    Windows SDK 子目录如下,是 64 位系统下 SDK 的 dll 库。如果没有安装 Visual Studio 2015 环境下,需要拷贝安装vc_redist.x64。这是 Visual C++ 2015的运行时环境。

    1. 64/
    2. vc_redist.x64
  • SDK_GUIDE.pdf: SDK 环境准备文档和 FAQ。

  • changelog: 新版本发布解决的问题和引入的新特性列表。

Linux C++ SDK 使用

自2016.12.02开始,Linux CPP 版本依赖了高性能 boost 库(1.62.0版本),不仅降低了 CPU 资源占用率,而且提高了运行效率。目前主要依赖了 boost_system,boost_thread,boost_chrono,boost_filesystem 四个库。我们提供了静态库和动态库两种解决方案:

静态解决方案

MQ 库文件在 lib/lib-boost-static 目录下,boost 库静态链接到 libonsclient4cpp.a 中。对于没有依赖 boost 库的业务方,可以直接选用静态库方案。静态库方案中,相应的boost库已经链接到 ibonsclient4cpp.a,编译时只需要链接 libonsclient4cpp.a 即可,无需执行其他操作。使用方式如下:

  1. cd aliyun-mq-linux-cpp-sdk //下载的SDK解压后的路径
  2. cd example //进入demo目录,修改demo文件,填入自己申请的topic,key相关的信息
  3. g++ -static -I ../include -L ../lib/lib-boost-static ProducerExampleForEx.cpp -lonsclient4cpp -lpthread ldl

注意: 完全的静态链接请确保机器上安装了 libstdc++,pthread 等相关的静态库,默认安装的 libstdc++ 是没有安装静态库的,所以需要通过 yum 或者 > apt-get 来安装相关的静态库。此外使用如上方式会出现一些警告信息如下:

  1. warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

建议最佳的方式,不要使用完全的静态链接,而是只静态链接 lonsclient4cpp,其他库动态链接即可。使用方式如下:

  1. g++ -I ../include -L ../lib/lib-boost-static ProducerExampleForEx.cpp Wl,-dn -lonsclient4cpp Wl,-dy -lpthread ldl

动态解决方案

MQ 库文件在 lib/lib-boost-share 目录下,需要业务方生成可执行文件时链接 boost 动态库和 libonsclient4cpp.so。对于业务方已经依赖了 boost 库,需要选择动态库方案的情况,对 boost 库的依赖需要做如下工作:

  1. 下载 boost 1.62.0 版本:

    boost 1.62.0

  2. 解压 boost 1.62.0:

    tar —bzip2 -xf /path/to/boost_1_62_0.tar.bz2
  3. 安装 boost 1.62.0 版本:

    1) cd path/to/boost_1_62_0

    2) 配置 boost:./bootstrap.sh

    3) 编译 boost: ./b2 link=shared runtime-link=shared

    4) 安装 boost: ./b2 install

  4. 执行 ldconfig -v|grep libboost。如果有相关的输出表明 boost 动态库在动态库搜索路径中。

  5. 生成可执行文件时,需要链接 boost 动态库和 MQ 动态库。方法如下:

    1. cd aliyun-mq-linux-cpp-sdk //下载的 SDK 解压后的路径
    2. cd example //进入 demo 目录,修改 demo 文件,填入自己在 MQ 控制台申请的 Topic,key 相关的信息
    3. g++ -Wall -Wno-deprecated -L ../lib/lib-boost-share/ -I ../include/ ProducerExampleForEx.cpp -lonsclient4cpp -lboost_system -lboost_thread -lboost_chrono -lboost_filesystem -lpthread
    4. export LD_LIBRARY_PATH="../lib/lib-boost-share/" //添加动态载入的搜索路径
    5. ./a.out //运行程序

Windows C++ SDK 使用

Visual Studio 2015 环境下使用 C++ SDK

  1. 使用 Visual Studio 2015 创建自己的项目。

    创建自己的项目1

    创建自己的项目2

    创建自己的项目3

  2. 右键单击项目,选择属性>配置管理器,设置活动解决方案配置为 release,设置活动解决方案平台为 x64

    平台配置1

    平台配置2

  3. 右键单击项目,依次选择属性>配置属性>常规>输出目录/A。按照活动解决方案平台的设置,拷贝 64 位 lib 目录下的所有文件到输出目录 /A

    设置输出目录

  4. 右键单击项目,依次选择属性>配置属性>C/C++-常规>附加包含目录/B。拷贝 include 目录下的头文件到包含目录: /B

    配置头文件1

    配置头文件2

  5. 右键单击项目,依次选择属性>配置属性>链接>常规>附加库目录/A

    附加库设置

  6. 右键单击项目,依次选择属性>配置属性>链接>输入>附加依赖项ONSClient4CPP.lib

    ONSCLient4CPP.lib设置

  7. 右键单击项目,依次选择属性>配置属性>>C/C++-常规>>预处理器定义: 添加 WIN32宏。

    设置win32宏

非 Visual Studio 2015 环境下使用 C++ SDK

  1. 首先需要按照 Visusal Studio 2015 的环境来配置,配置过程同上。

  2. 安装 vc_redist.x64。这是 Visual C++ 2015 的运行时环境。

    注意: 如果不想进行繁琐的设置,您也可以使用设置好的 SDK Demo,下载 SDK 后进行解压,然后进入 Demo 目录,使用 VS2015 打开工程。

    demo_1

    demo_2

    demo_3

    到此为此就设置好编译环境了。点击 Build,即可编译出可执行的程序,然后拷贝 dll 到可执行程序的目录下即可运行,或者拷贝 dll 到系统目录下。

本文导读目录
本文导读目录
以上内容是否对您有帮助?