1

DLLMAIN() /に DLL をロードDLL_PROCESS_ATTACHすると、問題が発生する場合があります。しかし、COM Objectseq CoInitialize() / CoCreateInstance() を使用してインスタンス化できますか?

編集: 質問: COM インスタンスを作成すると、この状況で DLL をロードするような同様のエラーが発生する可能性がありますか? DLL をロードして COM インスタンスを作成することは、ある意味では似ているように思えます。

4

1 に答える 1

2

その引用をどこから得たのかはわかりませんが、正しくないように聞こえます。

重要なコードを DllMain に挿入しないでください。特に、LoadLibrary を呼び出すコード。多くの Windows API は内部で LoadLibrary を呼び出すため、ここでは複雑な初期化を行わないことをお勧めします。グローバル C++ オブジェクト (コンストラクター用) を使用するか、初期化のために関数をエクスポートすることをお勧めします。

インプロセス コンポーネントの CoCreateInstance は、最終的に LoadLibrary またはそのバリアントの 1 つを呼び出します。この関数を DllMain で呼び出すのも賢明ではありません。

于 2014-07-22T06:58:01.707 に答える