Q_DECL_EXPORT int main(int argc, char **argv)
int main(...)
の前のこのQ_DECL_EXPORT
はどういう意味ですか?
QTドキュメント からの抜粋:
ターゲットプラットフォームに応じて、Qtは必要な定義を含む特別なマクロを提供します。
- Q_DECL_EXPORTは、共有ライブラリのコンパイル時に使用されるシンボルの宣言に追加する必要があります。
- Q_DECL_IMPORTは、共有ライブラリを使用するクライアントをコンパイルするときに使用されるシンボルの宣言に追加する必要があります。
QTコードを確認していませんが、おそらくこのマクロは次のように動作します。
_#ifdef _WIN32 || _WIN64
#define Q_DECL_EXPORT __declspec(dllexport)
#define Q_DECL_IMPORT __declspec(dllimport)
#else
#define Q_DECL_EXPORT
#define Q_DECL_IMPORT
#endif
_
__declspec(dllimport)
および__declspec(dllexport)
は、DLLとの間でシンボルを(それぞれ)インポートおよびエクスポートするようにリンカに指示します。これはWindows固有です。
特定のケースでは、main()
がライブラリの一部ではない可能性が高いため、このマクロはおそらく削除される可能性があります。
これはキーワードではなく、さまざまなコンパイラ固有のキーワードをカプセル化して、関数をexported
として宣言するマクロです。
_Q_DECL_EXPORT
_ および 共有ライブラリの作成 も参照してください。
これは通常、ライブラリとともに使用され、他のライブラリまたは実行可能ファイルによってインポート(「使用」)されるために、ライブラリからエクスポートする必要のある関数を定義します。
私はこれまでmain
関数でこれを見たことがありませんが、それはブラックベリー特有のものである可能性があります。一方、この tutorial は、main()
関数でもマクロを使用しないため、おそらく削除できます。