定义出口的问题

时间:2011-09-18 14:43:14

标签: visual-c++ warnings c-preprocessor

我正在尝试在VC ++ 2008中构建动态DLL,现在在.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部分没有突出显示,并且注释本应该反过来,另外我还有另一个包含Apply()方法的.h文件。

无法弄清楚我在做错了什么。我正在尝试导出PreFilter.h的函数

1 个答案:

答案 0 :(得分:1)

将PREFILTER_EXPORTS添加到Dll项目设置中的预处理器常量列表中:项目 - 属性 - 配置属性 - C ++ - 预处理器 - 预处理器定义。

在Dll项目中使用此文件时,在项目中定义PREFILTER_EXPORTS,并将PREFILTER_API扩展为__declspec(dllexport)。在未定义PREFILTER_EXPORTS的任何其他项目中,PREFILTER_API将扩展为__declspec(dllimport)。