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