0

オペレーティング システムが実行可能ファイルとして読み込んで実行できる単一のバイナリを作成できますが、動的にリンクすることもできますか?

これは、クライアントとサーバーが同じ実行可能ファイルに存在する (場合によってはコードを共有する) アプリケーション間でリソースを共有する場合に役立ちます。

WindowsだけでなくLinuxにも興味があります

4

3 に答える 3

3

少なくとも Windows では、これはサポートされていません。でモジュールをロードするLoadLibraryと、実行可能ファイルをそのモジュールに渡してLoadLibrary、その後そのモジュールからコードを実行することはできません。ドキュメントには次のように記載されています。

LoadLibrary を使用して、他の実行可能モジュールをロードすることもできます。たとえば、関数は .exe ファイルを指定して、FindResource または LoadResource で使用できるハンドルを取得できます。ただし、LoadLibrary を使用して .exe ファイルを実行しないでください。代わりに、CreateProcess 関数を使用してください。

必要なものを達成する最も簡単な方法は次のとおりです。

  • アプリケーションのすべてのコードを DLL に入れます。
  • その DLL から必要な関数をエクスポートします。
  • また、関数をエクスポートするか、これが GUI サブシステム アプリの場合はmainおそらくエクスポートします。WinMain
  • DLL にリンクし、その主な機能を DLL によってエクスポートされたものに委譲する簡単な実行可能プログラムを作成します。
于 2013-10-31T11:14:13.093 に答える
0

ここを見てください。少なくともウィンドウの下であなたの質問に答えることができます。 http://sandsprite.com/CodeStuff/Using_an_exe_as_a_dll.html

于 2013-10-31T11:11:34.607 に答える
0

exe を使用して、lib 内のシンボル リンクをエクスポートし、別のプロジェクト (たとえば DLL プロジェクト) をその lib にリンクできます。次に、DLL を exe 自体から動的にロードすると、すべてが機能します。他の方法で使用できるかどうかはわかりませんLoadLibrary

ラズヴァン。

于 2013-10-31T11:14:56.560 に答える