wxWidgets的C++中的窗户

问题描述:

我读这个特殊的代码片段: -wxWidgets的C++中的窗户

class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin 

这是在event.h头文件中定义的,我不明白“WXDLLIMPEXP_CORE”。

感谢

+0

wxWidgets使用了很多像这样的宏。您可以通过检查宏定义的位置来了解更多信息。 – 2012-04-13 06:46:05

如果我们where it is defined看看我们看到

#ifdef WXMAKINGDLL_CORE 
# define WXDLLIMPEXP_CORE WXEXPORT 
# define WXDLLIMPEXP_DATA_CORE(type) WXEXPORT type 
# if defined(HAVE_VISIBILITY) 
#  define WXDLLIMPEXP_INLINE_CORE WXEXPORT 
# else 
#  define WXDLLIMPEXP_INLINE_CORE 
# endif 
#elif defined(WXUSINGDLL) 
# define WXDLLIMPEXP_CORE WXIMPORT 
# define WXDLLIMPEXP_DATA_CORE(type) WXIMPORT type 
# if defined(HAVE_VISIBILITY) 
#  define WXDLLIMPEXP_INLINE_CORE WXIMPORT 
# else 
#  define WXDLLIMPEXP_INLINE_CORE 
# endif 
#else /* not making nor using DLL */ 
# define WXDLLIMPEXP_CORE 
# define WXDLLIMPEXP_DATA_CORE(type) type 
# define WXDLLIMPEXP_INLINE_CORE 
#endif 

文件中的其他地方的意见是相当解释为正在发生的事情,而是一个简短的总结是,有三种情况,我们正在制作一个DLL,使用一个DLL或者根本不使用它。最后一种情况是最简单的,如果我们根本没有使用DLL,那么它们被定义为什么都没有。如果我们正在制作一个DLL,那么它会将该类标记为导出,并且如果我们使用的是DLL,那么它将该类标记为导入。

+0

我得到了它的一部分,在这个我认为该类作为要导出(wxCommandEvent),因为WXDLLIMPEXP_CORE不使用任何使用Dll如果一个类的导出或导入,这取决于如果DLL用于创建DLL的 – 2012-04-13 07:20:52