Проблемы с определением экспорта - PullRequest
0 голосов
/ 18 сентября 2011

Я пытаюсь построить динамическую 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 вышеупомянутых макросов не выделена и прокомментирована, что должно было быть наоборот, плюс у меня есть другое.h файл, содержащий метод Apply ().

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

1 Ответ

1 голос
/ 18 сентября 2011

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

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

...