1

Ogre3D のソース コードをダウンロードしたところ、次のようなクラス宣言が見つかりました。

class _OgreExport TimeIndex
{ ...

「TimeIndex」はクラス名だと思いますが、真ん中の「_OgreExport」は何ですか?CPP リファレンスには、この種のクラス宣言形式は含まれていません。これは何ですか?

4

3 に答える 3

4

_OgreExportは、次のいずれかに展開されるプリプロセッサ ディレクティブです。

__declspec(dllimport)

ファイルがそのモジュールの外に含まれている場合、または

__declspec(dllexport)

それ以外は。Windows では、バイナリ間で使用できるように、エクスポート/インポートするクラス/メソッドを指定する必要があります。

技術的には、James がコメントで指摘したように、マクロ名はアンダースコアで始まるため、不正です。これらの名前は実装用に予約されています。

于 2013-02-12T08:52:21.983 に答える
3

OgrePlatform.h:138のこのコードを参照してください。

#       if defined( OGRE_NONCLIENT_BUILD )
#           define _OgreExport __declspec( dllexport )
#       else
#           if defined( __MINGW32__ )
#               define _OgreExport
#           else
#               define _OgreExport __declspec( dllimport )
#           endif
#       endif
#       define _OgrePrivate
#   endif

この種の質問がさらにある場合は、Google コード検索を使用することを強くお勧めします。たとえば、_OgreExport と入力して、他のユーザーがそれをどのように使用しているか、またはどのように定義されているかを確認してください。

于 2013-02-12T08:54:11.033 に答える
2

__declspec(dllexport)これは、リンカーによってエクスポートされるクラスをマークする、のようなものに展開されるマクロです。

于 2013-02-12T08:52:44.517 に答える