【问题标题】:wxWidgets in c++ on windowswindows上c++中的wxWidgets
【发布时间】:2012-04-13 06:43:49
【问题描述】:

我正在阅读这段特殊的代码 sn-p:-

  class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin

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

谢谢

【问题讨论】:

  • wxWidgets 使用了很多这样的宏。您可以通过检查宏的定义位置来了解更多信息。

标签: c++ multithreading wxwidgets


【解决方案1】:

如果我们查看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

文件中其他地方的 cmets 可以很好地解释正在发生的事情,但简要总结一下,有三种情况,我们正在制作一个 DLL,使用一个 DLL 或根本不使用一个。最后一种情况是最简单的,如果我们根本不使用 DLL,那么它们就被定义为一无所有。如果我们正在创建一个 DLL,那么它会将类标记为导出,如果我们正在使用 DLL,那么它将将该类标记为导入。

【讨论】:

  • 我得到了它的一部分,在这个我认为要导出的类(wxCommandEvent),因为WXDLLIMPEXP_CORE没有使用Dll,如果一个类被导出或导入取决于如果 DLL 用于创建 DLL
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2021-01-16
  • 2016-05-27
  • 2012-01-30
  • 2014-11-10
  • 1970-01-01
相关资源
最近更新 更多