我正在尝试在 Embarcadero C++ Builder 中使用 AWS Iot SDK,我正在使用 SDK 的嵌入式 C 版本。我试图在 RAD Studio IDE 中使用生成的 DLL,但无法输入所需的函数,因为它们都在命名空间和类下。
因此,为什么我决定使用这个问题中谈到的 SDK 的嵌入式 C 版本,因为它具有可移植性。 在 RAD Studio 的命名空间下调用 DLL 函数
使用 SDK 的嵌入式 C 版本,我再次将其生成为 DLL 文件,我使用下面的代码导出数据结构和函数,并使用下面的示例:
#ifdef PUBSNUB_EXPORTS
#define PUBSNUB_API __declspec(dllexport)
#else
#define PUBSNUB_API __declspec(dllimport)
#endif
PUBSNUB_API IoT_Error_t aws_iot_mqtt_publish(AWS_IoT_Client* pClient, const char* pTopicName, uint16_t topicNameLen,
IoT_Publish_Message_Params* pParams);
PUBSNUB_API IoT_Error_t aws_iot_mqtt_subscribe(AWS_IoT_Client *pClient, const char *pTopicName, uint16_t topicNameLen,
QoS qos, pApplicationHandler_t pApplicationHandler, void *pApplicationHandlerData);
当我尝试在 RAD studio 中调用这些函数时,我收到以下错误,即使按照指示在项目文件夹中复制了生成的 lib 文件。如果我在 Visual Studio 项目中调用这些函数,它将完全正常工作。
[ilink32 Error] Error: Unresolved external '_iotClientConnectParamsDefault' referenced from C:\MICRO PLUS\RELEASE\MAINFORM.OBJ
[ilink32 Error] Error: Unresolved external '_iotClientInitParamsDefault' referenced from C:\MICRO PLUS\RELEASE\MAINFORM.OBJ
[ilink32 Error] Error: Unresolved external '_aws_iot_mqtt_publish' referenced from C:\MICRO PLUS\RELEASE\MAINFORM.OBJ
[ilink32 Error] Error: Unable to perform link