2012-12-17 9 views

答えて

18
QT docsから

抜粋:

  • Q_DECL_EXPORTをコンパイルするときに使用されるシンボルの宣言に追加する必要があります。ターゲットプラットフォームに応じて、

    は、Qtは が必要な定義が含まれている特別なマクロを提供します共有ライブラリ。

  • 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()はおそらくライブラリの一部ではないため、このマクロはおそらく削除される可能性があります。

6

キーワードではなく、異なるコンパイラ固有のキーワードをカプセル化して、exportedとして機能を宣言するマクロです。

Q_DECL_EXPORTおよびCreating Shared Librariesも参照してください。

通常、他のライブラリや実行可能ファイルによってインポート( "使用")されるためには、ライブラリからエクスポートする必要のある関数を定義するためにライブラリと一緒に使用されます。

これまでのところmain機能でこれを見たことはありませんが、それはブラックベリー特有のものです。一方、このtutorialは、main()関数のマクロも使用しないため、おそらく削除できます。