Ogre Character サンプルを見ていると、次のように宣言されているクラスがあります。
class _OgreSampleClassExport Sample_Character : public SdkSample
クラス識別子は Sample_Character で、SdkSample クラスから派生しています。_OgreSampleClassExport とは何ですか?
Windows プラットフォーム_OgreSampleClassExport
では、クラスのメンバーの DLL リンケージを指定するために使用されるマクロです。マクロ__declspec(dllimport)
が外部 DLL に存在するメンバーに展開される場合、インポートする必要があります。ビルド中の DLL に存在するメンバに展開すると__declspec(dllexport)
、エクスポートされます。マクロが空白の場合、メンバーは静的にリンクされ、DLL で終了しません。
他のプラットフォームでもほぼ同じように機能します。Linux で GCC を使用してコンパイルすると、マクロは__attribute__ ((visibility("???")))
"???" に展開されます。to で使用されるのと同様の方法でリンケージを指定し__declspec()
ます。
この投稿は関連があるようです - class キーワードの後のマクロ変数
基本的に、動的にリンクされたライブラリをサポートするためにクラスをエクスポートできます。