2011-09-18 2 views
0

Я пытаюсь построить динамический DLL в VC++ 2008, в настоящее время в .h файле, я объявляю следующиеПроблемы с определением экспорта

#ifndef PREFILTER_LIBRARY_H 
#define PREFILTER_LIBRARY_H 

#ifdef PREFILTER_EXPORTS 
# define PREFILTER_API __declspec(dllexport) 
#else 
# define PREFILTER_API __declspec(dllimport) 
#endif 

#endif 

В то время как в файле PreFilter.h Я пишу

class PREFILTER_API PreFilter 
{ 
... 
}; 

проблема в том, я получаю:

warning C4273: 'PreFilter::Apply' : inconsistent dll linkage 

Я вижу, что dllexport часть вышеприведенных макросов не подсвечивается и с ommented, который должен был быть наоборот, плюс у меня есть другой файл .h, содержащий метод Apply().

Не могу понять, что я делаю неправильно здесь. Я пытаюсь экспортировать функции PreFilter.h

ответ

1

Добавить PREFILTER_EXPORTS в список констант препроцессора в настройках проекта Dll: Project - Properties - Свойства конфигурации - C++ - Препроцессор - Определения препроцессора.

Когда этот файл используется в проекте Dll, в проекте определяется PREFILTER_EXPORTS, а PREFILTER_API расширяется как __declspec (dllexport). В любом другом проекте, где PREFILTER_EXPORTS не определен, PREFILTER_API расширяется как __declspec (dllimport).

+0

Спасибо, помощник. Работал как шарм! –

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