COM DLLを構築する場合、その理由などDllGetClassObject
、DllCanUnloadNow
、DllRegisterServer
、DllUnregisterServer
、などの輸出が関連付けられている.DEF
ファイルのEXPORTS
セクションにPRIVATE
をマークする必要がありますか?COM DLLのエクスポートに「プライベート」とマークする必要があるのはなぜですか?
6
A
答えて
9
DLLをビルドすると、DLLのインポートライブラリが自動的に作成されます。エクスポートされたすべての関数のリストが含まれています。インポートライブラリは、DLLを使用する別のプロジェクトで使用します。
COMサーバーに固有のことは、これら4つのエクスポートされた関数は常にGetProcAddress()で検出され、COM dllに暗黙の依存関係がないことです。 CoCreateInstance()を使用してCOMオブジェクトを作成する場合は、COM配管でDLLを検索し、GetProcAddress()を使用してDllGetClassObject()関数を探します。 Regsvr32.exeによって発見されたDllUn/RegisterServerの同じ話。そして、COM配管工によって発見されたDllCanUnloadNow。したがって、インポートライブラリは必要ありません。
PRIVATEを使用すると、関数がインポートライブラリにエクスポートされないことが保証されます。それらのすべてをプライベートにすると、インポートライブラリはまったくありません。あなたがそれを省略すると、何も間違ってはいけません。リンカから、あなたが使用しない余分なファイルを取得するだけです。
関連する問題
- 1. なぜテンプレートクラスをエクスポートする必要はありませんか?
- 2. Windows DLLライブラリでデストラクタをエクスポートする必要がありますか?
- 3. なぜクラスをC++でエクスポートする必要がありますか?
- 4. `pthread_mutex_trylock`があるときに` pthread_mutex_lock`が必要なのはなぜですか?
- 5. エクスポート/インポート宣言をes2015のトップレベルにする必要があるのはなぜですか?
- 6. "Excel.Application"のようなスクリプトで使用するCOM DLLを作成する必要があります
- 7. まだdllがexeファイルの同じフォルダにある場合でも、dllを登録する必要があるのはなぜですか?
- 8. MVC3 SportsStoreの例:AddToCartにHttpPostとマークする必要がありますか?
- 9. なぜ?と?を使用する必要があるのはなぜですか?一緒にならずに
- 10. ポインタをi_dにエクスポートするには、DLLに何を追加する必要がありますか?
- 11. java @SafeVarargsプライベートメソッドをfinalにする必要があるのはなぜですか?
- 12. ClassInitializeメソッドを静的にする必要があるのはなぜですか?
- 13. Lispの中に# 'を入れる必要があるのはなぜですか?
- 14. COMサーバーにジョブキューが必要ですか?
- 15. Junitのテストメソッドを公開する必要があるのはなぜですか?
- 16. エミュレーションをリアルタイムで実行する必要があるのはなぜですか?
- 17. ここで二重キャストする必要があるのはなぜですか?
- 18. メインでAをインポートする必要があるのはなぜですか?
- 19. Java - aspectjでプラグインをインストールする必要があるのはなぜですか?
- 20. $リソースで$ promiseを使用する必要があるのはなぜですか?
- 21. キャッスルアクティブレコードでは、セッションスコープを終了する必要があるときにCreateAndFlushを使用する必要があるのはなぜですか?
- 22. DLLに署名する必要がありますか?
- 23. @Singletonクラス私はコンストラクタをプライベートにする必要がありますか?
- 24. @Entityがある場合、なぜ "annotatedClasses"が必要ですか?
- 25. 参照アセンブリを連鎖する必要があるのはなぜですか?
- 26. インターフェイスを再宣言する必要があるのはなぜですか?
- 27. COBOLをインデントする必要があるのはなぜですか?
- 28. TypedArrayをリサイクルする必要があるのはなぜですか?
- 29. NSObjectを継承する必要があるのはなぜですか?
- 30. なぜhtml_safeに注意する必要がありますか?