Как я могу удалить эту ссылку, предупреждающую? Вы видите сегмент кода, который вызывает это предупреждение.
static AFX_EXTENSION_MODULE GuiCtrlsDLL = { NULL, NULL };
//bla bla
// Exported DLL initialization is run in context of running application
extern "C" void WINAPI InitGuiCtrlsDLL()
{
// create a new CDynLinkLibrary for this app
new CDynLinkLibrary(GuiCtrlsDLL);
// nothing more to do
}
предупреждение C4273: 'InitGuiCtrlsDLL': inconsisten t dll связь
Я имею также экспорт и импортирую определения, как:
#ifdef _GUICTRLS
#define GUI_CTRLS_EXPORT __declspec(dllexport)
#else
#define GUI_CTRLS_EXPORT __declspec(dllimport)
#endif
Это предупреждение обычно вызвано дублированием определения функции с другим использованием dllimport. Вы уверены, что не делали этого?
Цель операторов препроцессора:
#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 определен в заголовочном файле, который включен в несколько проектов.