【解決方法】DLL が実行可能ファイルと通信する方法


やあ、

ウェブサイトで答えを見つけることができませんでした。知っている団体があれば、説明してください。

DLL と実行可能ファイルは同じマシンで実行されており、DLL はプロセスの完了に関するメッセージを実行可能ファイルに送信します (例: DLL からのデータ/リソースのロード)。

DLL はどのようにして実行可能ファイルを親密にすることができるのでしょうか?

よろしく。
ランジス

解決策 3

マイクが説明したもの (コールバック) を使用できます…しかし、これが Windows 用の場合… Windows メッセージを使用します。 なぜ? …一度この手法を理解すれば、DLL インターフェイスを変更せずにメッセージを追加/削除するのは簡単だからです (DLL インターフェイスの変更を気にするかどうかによって異なります)。

MFC を使用した Windows メッセージに関する記事は次のとおりです。ただし、MFC を使用していない場合は、生の WinAPI を使用して実行することもできます (これも非常に簡単です)。

[^]

解決策 4

コードがプロセス内の DLL にあるか EXE にあるかは関係ありません。 重要なことは、相互に通信する必要がある 2 つのプロセスがあるということです。 通信では非同期メッセージ パッシングを使用する必要はないと思います (メッセージパッシング、つまり、通信を実行する必要があるときは両方のプロセスが実行されています。

この場合、IPC メカニズムを選択して使用する必要があります。 Windows プロセス間通信

リストされている Windows IPC メカニズムの 2 つの最も基本的な通信方法は、パイプとソケットです。
私の個人的なお気に入りはソケットです。理由は次のとおりです。
– あらゆるプラットフォームに簡単に移植できます
– 別のマシンでプロセスを実行するのが簡単で、通信コードは同じです
– 異なる言語で書かれたプログラム間で簡単に使用できます
– ループバック通信 (両方のエンドポイントが同じマシン上にある場合) はすべての主要なプラットフォームで最適化されているため、ソケットをローカルで使用することはパイプを使用するのと同じくらい効果的です

解決策 1

コールバックを使用します。

例については、この記事を参照してください。 C++ のタイプセーフなコールバック[^]

解決策 2

こんにちは、

必要だと思うけどよくわからない

ダイナミックリンクライブラリをロードする方法

良い一日を

コメント

タイトルとURLをコピーしました