全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
阿里云SDK开发指南

使用C++ SDK

更新时间:2018-03-01 11:32:00

前提条件

  • 已安装支持C++ 11或更高版本的编译器,包括(Visual Studio 2015及以上版本或 GCC 4.9及以上版本)。

  • 已安装CMake 3.0或以上版本。

  • 计算机拥有4 GB或更大的内存。

安装

您可以通过访问Github下载阿里云C++ SDK的源代码。

您也可以执行以下命令,使用git获取C++ SDK的源代码。

  1. git clone https://github.com/aliyun/aliyun-openapi-cpp-sdk.git
  • Windows平台安装C++ SDK

    进入源代码的sdk_build目录,使用Visual Studio打开alibabacloud-sdk.sln文件,生成解决方案。

    您也可以在Visual Studio的开发人员命令提示符中执行以下命令,安装C++ SDK。

    1. msbuild ALL_BUILD.vcxproj
    2. msbuild INSTALL.vcxproj
  • Linux平台安装C++ SDK

    1. 要在Linux安装C++SDK, 您必须安装依赖库,包括libcurl、libopenssl、libuuid和libjsoncpp。

      • 在基于Debian/Ubuntu的系统中执行以下命令,安装依赖库。
        1. sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev libjsoncpp-dev
      • 在基于Redhat / Fedora的系统中执行以下命令,安装依赖库。
        1. sudo dnf install libcurl-devel openssl-devel libuuid-devel libjsoncpp-devel
    2. 执行以下命令,编译并安装C++ SDK。

      1. make
      2. sudo make install

初始化SDK

在使用阿里云 C++ SDK 服务客户端发起请求前,您必须先使用AlibabaCloud::InitializeSdk接口进行初始化,最后还需使用 AlibabaCloud::ShutdownSdk接口释放资源。

  1. #include <alibabacloud/core/AlibabaCloud.h>
  2. int main(int argc, char** argv)
  3. {
  4. AlibabaCloud::InitializeSdk();
  5. // ......
  6. AlibabaCloud::ShutdownSdk();
  7. return 0;
  8. }

设置身份验证凭据

当使用阿里云SDK访问阿里云服务时,您需要提供阿里云账号进行身份验证。

目前,C++ SDK支持以下几种身份验证方式:

验证方式 说明
AccessKey 使用AccessKey ID和AccessKey Secret访问
StsToken 使用STS Token访问
RamRoleArn 使用RAM子账号的AssumeRole方式访问
EcsRamRole 在ECS实例上通过EcsRamRole实现免密验证

本文以AccessKey为例说明如何设置凭据。为了保证您的账号安全,建议您使用RAM账号来访问阿里云服务。阿里云账号的AccessKey对拥有的资源有完全的权限。RAM账号由阿里云账号授权创建,仅有对特定资源限定的操作权限。参考创建AccessKey获取RAM账号的AccessKey。

使用AccessKey作为访问凭据,需要在初始化Client时设置凭证。

注意:确保包含AccessKey的代码不会泄漏(例如提交到外部公开的GitHub项目),否则将会危害您的阿里云账号的信息安全。

  1. // 创建客户端实例
  2. ClientConfiguration configuration("<your-region-id>");
  3. EcsClient client("<your-access-key-id>", "<your-access-key-secret>", configuration);

配置服务客户端

阿里云C++ SDK服务客户端类为您提供了该类所代表的阿里云的服务接口。服务客户端通常遵循的名称约定:AlibabaCloud::Service::ServiceClient

例如,使用AlibabaCloud::Ecs::EcsClient类构建云服务器ECS的客户端。

您可以使用客户端配置类ClientConfiguration来控制部分服务客户端运行时功能。

  1. // 配置 ecs 实例
  2. ClientConfiguration configuration;
  3. configuration.setRegionId("cn-hangzhou");
  4. configuration.setEndpoint("ecs-cn-hangzhou.aliyuncs.com");
  5. EcsClient client("<your-access-key-id>", "<your-access-key-secret>", configuration);

其中:

  • regionId是地域ID。RegionId可以从地域列表中获得。

  • endpoint是服务节点。(不建议使用)

  • proxy是网络代理设置。

使用CMake构建程序

CMake是一个开源的跨平台自动化建构系统,它使用一个名为CMakeLists.txt的文件来描述构建过程和应用程序依赖关系,并最终生成适合您当前构建平台的项目文件。

1. 创建CMake项目

  1. 执行以下命令,创建项目文件目录。

    1. mkdir my_example
  2. 进入该目录并创建CMakeLists.txt文件。

    该文件用于描述您的项目名称,可执行文件,源文件和链接库。关于更多CMake选项功的功能介绍,请参见CMake官方网站

    1. # 为项目设置cmake所需的最低版本
    2. cmake_minimum_required(VERSION 3.0)
    3. # 为整个项目设置名称
    4. project(my-example)
    5. # 设置默认为 C++ 11
    6. set(CMAKE_CXX_STANDARD 11)
    7. # 设置SDK库安装目录
    8. link_directories(/usr/local/lib64)
    9. # 设置应用程序名及原文件
    10. add_executable(my-example
    11. main.cc)
    12. # 动态链接 SDK 库文件
    13. add_definitions(-DALIBABACLOUD_SHARED)
    14. # 指定要链接的 SDK 库文件
    15. target_link_libraries(my-example
    16. alibabacloud-sdk-core
    17. alibabacloud-sdk-ecs)

2. 使用CMake进行编译

  1. 执行以下命令,在项目文件夹下创建编译目录。

    1. mkdir build
  2. 进入该目录并执行camke命令。

    1. cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr/local ..

    其中,阿里云C++ SDK部分的编译选项如下:

    • BUILD_SHARED_LIBS:指定阿里云SDK库文件输出类型,取值:ON|OFF,如果为ON将输出为共享库,否则为静态库。默认值:ON

      注意:要动态链接阿里云SDK前,您需要定义预处理器符号ALIBABACLOUD_SHARED

    • BUILD_TESTS:指定是否编译单元测试模块,取值:ON|OFF。如果为ON将编译单元测试模块,否则不编译。默认值:ON

    • TARGET_OUTPUT_NAME_PREFIX:指定输出文件名前缀。默认值:alibabacloud-sdk-

  3. 在生成Makefile文件后,执行make命令编译应用程序。

本文导读目录