Я пытаюсь использовать AWS Iot SDK в Embarcadero C ++ Builder, в котором я использую встроенную версию C SDK. Я пытался использовать сгенерированную DLL в среде разработки RAD Studio, но не смог ввести необходимые функции, поскольку все это находилось в пространствах имен и классах.
Поэтому я решил использовать версию SDK Embedded C, о которой говорилось в этом вопросе, из-за ее переносимости. Вызов функций DLL в пространстве имен в RAD Студия
В версии SDK Embedded 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