Назначение операторов препроцессора:
#ifdef _GUICTRLS
#define GUI_CTRLS_EXPORT __declspec(dllexport)
#else
#define GUI_CTRLS_EXPORT __declspec(dllimport)
#endif
должен убедиться, что заголовочный файл объявляет класс или функцию как __declspec (dllexport) в .dll, где он определен, и как __declspec (dllimport) для любых других .dll, которые могут захотеть его использовать. *
Чтобы это работало, _GUICTRLS должен быть определен при компиляции экспортируемого .dll, а не определен для любых других .dll. Обычно вы ожидаете, что _GUICTRLS будет определен в свойствах проекта в C / C ++ -> Preprocessor -> Preprocessor Definitions.
Ошибка компилятора, которую вы видите, обычно возникает из-за того, что _GUICTRLS не определен для проекта, выполняющего экспорт, или определен для нескольких проектов, как правило, в результате вырезания вставки из одного проекта в другой. Вы также увидите это, если _GUICTRLS определен в заголовочном файле, который включен в несколько проектов.