0

私はこの特定のコードスニペットを読んでいました:-

  class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin

これはevent.hヘッダーファイルで定義されています、私は「WXDLLIMPEXP_CORE」を理解していませんでした。

ありがとう

4

1 に答える 1

2

定義されている場所を見ると、

#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 を使用している、またはまったく使用していないという 3 つのケースがあるということです。最後のケースは最も単純で、DLL をまったく使用していない場合、DLL は何も定義されていません。DLL を作成している場合はクラスがエクスポート済みとしてマークされ、DLL を使用している場合はクラスがインポート済みとしてマークされます。

于 2012-04-13T07:07:43.040 に答える