2015-10-23 3 views
0

Казалось бы, что пример не мог получить любой проще:Создание библиотеки DLL в Visual Studio 2015

//Example.h 
#pragma once 

#ifdef EXPORTING_DLL 
extern __declspec(dllexport) void HelloWorld(); 
#else 
extern __declspec(dllimport) void HelloWorld(); 
#endif  



//Example.cpp 
#include "Functions.h" 

#define EXPORTING_DLL 

void HelloWorld() 
{ 

} 

Итак, что у меня есть проблемы с? OK, при попытке компиляции, как это, то есть после создания типа длла проекта в VS, я получаю предупреждение:
предупреждения C4273: «HelloWorld»: несовместимая длл связь
, если я изменю определение HelloWorld в CPP файле на:

__declspec(dllimport) void HelloWorld() 
    { 
    } 

Я получаю сообщение об ошибке:

Ошибка C2491 'HelloWorld': определение DllImport функции не допускается
Если с другой стороны, я могу изменить определение из HelloWorld на:

__declspec(dllexport) void HelloWorld() 
{ 

} 

Я получаю предупреждение:

Предупреждение C4273 «HelloWorld»: несовместимые дллы тяги
Любой идеи, как определить он так компилируется без каких-либо предупреждений? Я имею в виду, эти предупреждения, по крайней мере, беспокоят.

+0

Вы определяете 'EXPORTING_DLL' после включения файла заголовка. Поэтому, когда заголовок включен, он считает, что он импортирует DLL. –

+0

@MikeVine Привет Майк, эй, я думаю, вы должны добавить этот комментарий в качестве ответа, чтобы я мог его принять. На данный момент +1 и огромное спасибо! – Artur

ответ

1

Вы должны указать EXPORTING_DLLдо, включая заголовок. Таким образом, заголовок может объявить правильный прототип, основываясь на том, импортируете или экспортируете.

Без этого он будет импортировать, который не то, что вы хотите

Смежные вопросы