私は、これらの2つの違いの簡単で簡潔な説明を探しています。 MSDNはここで細部の詳細を知っているわけではありません。dllexportとdllimportの違いは何ですか?
答えて
は、このオブジェクトを他のDLLがインポートできるようにすることをリンカーに指示します。他の人がリンクできるDLLを作成するときに使用されます。
__declspec(dllimport)
は、DLLから実装をインポートして、アプリケーションで使用できるようにします。
は私だけ初心者のC/C++開発者ですので、おそらく誰かのはI.
二つの異なるユースケースよりも良い説明だ:
1)あなたは内のクラスの実装を定義しているがdll。別のプログラムでクラスを使用したいとします。ここでは、dllexportを使用して、dllで公開するクラスを作成します。
2)dllで提供されている関数を使用しています。あなたはdllに付属のヘッダーを含めます。ここでヘッダーはdllimportを使用して、現在のプログラムで使用される実装を取り込みます。
多くの場合、同じヘッダーファイルが両方のケースで使用され、定義されたマクロが使用されます。ビルド構成では、必要なマクロをインポートまたはエクスポートするように定義します。
Dllexportは、エクスポートされた関数をマークするために使用されます。関数をDLLに実装し、DLLを使用するすべての人が使用できるようにエクスポートします。
Dllimportは逆です。DLLからインポートされたものとしてマークされます。この場合、関数のシグネチャを宣言し、コードをライブラリにリンクするだけです。
__declspec(dllexport)
- このようにタグ付けされたクラスまたは関数は、ビルドされたDLLからエクスポートされます。DLLを作成していて、APIが必要な場合は、これを使用するか、別の.DEFファイル輸出を定義します(MSDN)。これは、1つの場所に定義を保持するので便利ですが、.DEFファイルはさらに多くのオプションを提供します。
__declspec(dllimport)
- このようにタグ付けされたクラスまたは関数は、DLLからインポートされます。これは実際には必要ではありません。インポートライブラリが必要です。リンカを幸せにするにはしかし、dllimport
と正しくマークされていると、コンパイラとリンカは呼び出しを最適化するのに十分な情報を持っています。それがなければ、インポートライブラリ内のスタブ関数への通常の静的なリンクが得られ、不要な間接参照が追加されます。 ONT1ONT2
- 1. dllimportとdllexportの間のリンク
- 2. dllexport/dllimportスイッチのマクロ
- 3. __declspec(dllimportの/のdllexport)と継承
- 4. [DllImport( "QCall")]とは何ですか?
- 5. difftimeと ' - 'の違いは何ですか?
- 6. A`と ``の違いは何ですか[:] `
- 7. `&`と `ref`の違いは何ですか?
- 8. バックスティックと$()の違いは何ですか?
- 9. `##`と `hashCode`の違いは何ですか?
- 10. "$^N"と "$ +"の違いは何ですか?
- 11. #{} $ {}と%{}の違いは何ですか?
- 12. typedefとの違いは何ですか?
- 13. %Qと%{}の違いは何ですか?
- 14. `==`と `is`の違いは何ですか?
- 15. $と$$の違いは何ですか?
- 16. NodeJS:「./ ..」と「..」の違いは何ですか?
- 17. $ dirtyと$ invalid:違いは何ですか?
- 18. Backbone.jsとPusherapp - 違いは何ですか?
- 19. libspeとlibspe2?違いは何ですか?
- 20. リストと何か([_])と何か(_)の違い
- 21. decodeURIComponentとunescapeの違いは何ですか?unescapeの問題は何ですか?
- 22. コロンの配置の違いは何ですか:何かと何か:
- 23. GoogleのDremelとは何ですか? Mapreduceとの違いは?
- 24. 重要な違いは何ですかext2-ext3とext3-ext4の違いは何ですか?
- 25. 「アソシエーション」と「リレーション」という用語の違いは何ですか?
- 26. グロムとは何ですか? mapPartitionsとの違いは?
- 27. AndroidでThread.run()とHandler.post()とServiceの違いは何ですか?
- 28. Androidでは、MotionEventのgetAction()とgetActionMasked()の違いは何ですか?
- 29. XSLT属性の違いとは何か
- 30. nHibernateのICriteriaとICriterionの違いと利点は何ですか?
'dllimport'を使用しなかった場合の結果に関する非常に良い情報です。 – alecov