Azure IoT中心C sdk blob上传示例可能没有低级API?

时间:2017-08-28 14:42:22

标签: azure-iot-hub

我正在尝试Azure IoT中心C sdk中的iothub_client / samples / iothub_client_sample_upload_to_blob。如果我使用低级API,它编译并正常工作。 但是,只要我切换到便利层(正如应用程序文件中的文档所示),我就会收到错误:

/home/user/workspaceMisc/azure-iot-sdk-c/iothub_client/samples/iothub_client_sample_upload_to_blob/iothub_client_sample_upload_to_blob.c: In function ‘iothub_client_sample_upload_to_blob_run’:
/home/user/workspaceMisc/azure-iot-sdk-c/iothub_client/samples/iothub_client_sample_upload_to_blob/iothub_client_sample_upload_to_blob.c:77:25: error: implicit declaration of function ‘IoTHubClient_UploadToBlob’ [-Werror=implicit-function-declaration]
                     if (IoTHubClient_UploadToBlob(iotHubClientHandle, "subdir/hello_world.txt", (const unsigned char*)HELLO_WORLD, sizeof(HELLO_WORLD) - 1) != IOTHUB_CLIENT_OK)
                         ^
cc1: all warnings being treated as errors
iothub_client/samples/iothub_client_sample_upload_to_blob/CMakeFiles/iothub_client_sample_upload_to_blob.dir/build.make:62: recipe for target 'iothub_client/samples/iothub_client_sample_upload_to_blob/CMakeFiles/iothub_client_sample_upload_to_blob.dir/iothub_client_sample_upload_to_blob.c.o' failed

如何使用便利图层而不是低级图层上传文件?它有可能吗?

我使用的是Ubuntu 16.04,gcc 5.4.0以及SDK的最新版本。

1 个答案:

答案 0 :(得分:0)

实际上函数名称为IoTHubClient_UploadToBlobAsync,您需要添加异步后缀。还需要额外的两个参数:iotHubClientFileUploadCallbackcontextThis document有点误导。

所以你可以像这样调用这个函数:

IoTHubClient_UploadToBlobAsync(iotHubClientHandle, "subdir/hello_world.txt", (const unsigned char*)HELLO_WORLD, sizeof(HELLO_WORLD) - 1, NULL, NULL);