文档首页/ 设备接入 IoTDA/ SDK参考/ 应用侧SDK/ 应用侧C++ SDK使用指南
更新时间:2025-09-09 GMT+08:00
分享

应用侧C++ SDK使用指南

物联网平台提供CPP语言的应用侧SDK供开发者使用。本文介绍应用侧 C++SDK的安装和配置,以及使用C++ SDK调用应用侧API的示例。

在Linux系统上安装SDK

  1. 获取依赖包。

    1. 所需的这些第三方软件包在大部分系统的包管理工具中都有提供,例如基于Debian/Ubuntu的系统。
      sudo apt-get install libcurl4-openssl-dev libboost-all-dev libssl-dev libcpprest-dev
    2. spdlog需要从源码进行安装。
      git clone https://github.com/gabime/spdlog.git 
      cd spdlog 
      mkdir build 
      cd build 
      cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON ..  // 用以生成动态库 make sudo make install

  2. 编译安装。

    git clone https://github.com/huaweicloud/huaweicloud-sdk-cpp-v3.git 
    cd huaweicloud-sdk-cpp-v3 
    mkdir build 
    cd build 
    cmake .. make 
    sudo make install

    完成上述操作后,C++ SDK安装目录为“ /usr/local”

在Windows系统上安装SDK

  1. 安装vcpkg并使用vcpkg安装所需软件包。

    vcpkg install curl cpprestsdk boost openssl spdlog

  2. 使用CLion进行编译。

    1. 使用CLion打开huaweicloud-sdk-cpp-v3目录。
    2. 选择“File > Settings”
    3. 选择“Build > Execution > Deployment > CMake”
    4. 在CMake options中加入以下配置。
      -DCMAKE_TOOLCHAIN_FILE={your vcpkg install dir}/scripts/buildsystems/vcpkg.cmake
    5. 右键CMakeLists.txt选择“Load CMake Project”
    6. 配置clion的编译工具链为MSVC: 在2.c的CMake配置页面选择Toolchain为Visual Studio,不能选择mingw等其他编译器(windows平台下依赖msvc编译器, 选择mingw等其他编译器编译会报错)。另外,用户还可以选择编译出来的二进制文件是Debug模式还是Release模式, 选择Build Type进行下拉选择即可。
    7. 配置目标文件的架构和平台: windows平台支持编译不同CPU架构(x64, x86)的sdk链接库文件,用户可以根据实际需要进行配置,单击“Build > Execution, Deployment > Toolchains”,在Architecture选项可以下拉选择支持的CPU架构。
    8. 选择“Build”开始编译,编译结果会在clion控制台进行打印。

  3. 安装 C++ SDK。编译完成后选择“Build > Install”,完成后,C++ SDK安装目录为“C:\Program File (x86)\huaweicloud-sdk-cpp-v3”

代码示例

以调用查询设备列表接口为例,以下代码示例向您展示使用C++ SDK的主要步骤:

  1. 创建认证。
  2. 创建IoTDAClient实例并初始化。
  3. 实例化请求对象。
  4. 调用查询设备列表接口。

    #include <cstdio>
    #include <iostream>
    #include <huaweicloud/core/exception/Exceptions.h>
    #include <huaweicloud/core/Client.h>
    #include <huaweicloud/iotda/v5/IoTDAClient.h>
    
    using namespace HuaweiCloud::Sdk;
    using namespace HuaweiCloud::Sdk::Core;
    using namespace HuaweiCloud::Sdk::Core::Utils;
    using namespace HuaweiCloud::Sdk::Core::Exception;
    using namespace HuaweiCloud::Sdk::Iotda::V5;
    using namespace HuaweiCloud::Sdk::Iotda::V5::Model;
    using namespace std;
    int main(void)
    {
        // region_id:如果是上海一,请填写"cn-east-3";如果是北京四,请填写"cn-north-4";如果是华南广州,请填写"cn-south-1"
        std::string regionId = "<YOUR REGION ID>";
        std::string projectId = "<YOUR PROJECTID>";
        // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
        std::string endpoint = "<YOUR ENDPOINT>";
        std::string ak;
        std::string sk;
    #if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER)
        ak = getenv("HUAWEICLOUD_SDK_AK");
        sk = getenv("HUAWEICLOUD_SDK_SK");
    #elif defined(linux) || defined(__linux) || defined(__linux__)
        char* envVar;
        #define INIT_ENV_VAR(ID, NAME)               \
        do {                                     \
            if (envVar = secure_getenv(#NAME)) { \
                ID = std::string(envVar);        \
            }                                    \
        } while (0)
        INIT_ENV_VAR(ak, HUAWEICLOUD_SDK_AK);
        INIT_ENV_VAR(sk, HUAWEICLOUD_SDK_SK);
        #undef INIT_ENV_VAR
    #endif
    
        auto basicCredentials = std::make_unique<BasicCredentials>();
        // 标准版企业版请使用衍生算法,基础版删除该代码
        basicCredentials->setDerivedPredicate(Constants::DEFAULT_DERIVED_PREDICATE);
        basicCredentials->withAk(ak)
                .withSk(sk)
                .withProjectId(projectId);
        auto client = HuaweiCloud::Sdk::Iotda::V5::IoTDAClient::newBuilder()
                .withCredentials(std::unique_ptr<Credentials>(basicCredentials.release()))
                .withRegion(Region(regionId, endpoint))
                .build();
        // Initialize request parameters
        HuaweiCloud::Sdk::Iotda::V5::Model::ListDevicesRequest request = HuaweiCloud::Sdk::Iotda::V5::Model::ListDevicesRequest();
        try {
            std::string stringValue;
            std::cout << "************ListDevice***********" << std::endl;
            // 调用查询设备列表接口
            std::shared_ptr<HuaweiCloud::Sdk::Iotda::V5::Model::ListDevicesResponse> listRes =
                    client->listDevices(request);
            std::cout << listRes->getHttpBody() << std::endl;
        } catch (HostUnreachableException& e) { // handle exception
            std::cout << e.what() << std::endl;
        } catch (SslHandShakeException& e) {
            std::cout << e.what() << std::endl;
        } catch (RetryOutageException& e) {
            std::cout << e.what() << std::endl;
        } catch (CallTimeoutException& e) {
            std::cout << e.what() << std::endl;
        } catch (ServiceResponseException& e) {
            std::cout << "StatusCode: " << e.getStatusCode() << std::endl;
            std::cout << "ErrorCode: " << e.getErrorCode() << std::endl;
            std::cout << "ErrorMsg: " << e.getErrorMsg() << std::endl;
            std::cout << "RequestId: " << e.getRequestId() << std::endl;
        }
        return 0;
    }

  5. 如果您是在Linux系统中运行该代码,请复制上述文件到iotda_test.cpp。然后执行如下命令:

    $ g++ -o iotda_test iotda_test.cpp --std=c++14 -liotda_v5 -lcore -lcrypto -lboost_system -lcpprest
    $ ./iotda_test 
    # 下方会显示实际运行结果$ 

    如果您是在Windows系统下使用cmake来管理工程,则需要在CMakeLists.txt 中引入sdk core包和服务包的相关依赖。可以参考下面的CMakeLists.txt 文件:

    cmake_minimum_required(VERSION 3.16) 
    project(demo) 
    find_package(CURL REQUIRED) 
    set(CMAKE_CXX_STANDARD 14) 
     
    set(LINK_DIR "C:/Program Files (x86)/huaweicloud_cpp_sdk_v3/bin;") 
    set(BIN_DIR "C:/Program Files (x86)/huaweicloud_cpp_sdk_v3/lib;") 
    set(SERVICE_DIR "C:/Program Files (x86)/huaweicloud_cpp_sdk_v3/include;") 
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBOOST_UUID_FORCE_AUTO_LINK")  
    
    link_directories(${BIN_DIR}) 
    include_directories(${SERVICE_DIR}) 
    add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") 
    add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
      
    add_executable(demo main.cpp) 
    target_link_libraries(demo PUBLIC core iotda_v5)

更多

项目源码及更多详细的使用指导请参考华为云开发者 C++ 软件开发工具包(C++ SDK)

推荐您使用API在线调试工具API Explorer ,API Explorer 支持快速调试和检索,调试API的同时,可以根据您的参数实时生成各种开发语言的SDK示例代码,方便您直接根据示例代码使用SDK。

相关文档