web-dev-qa-db-ja.com

64ビットアプリケーションで32ビットDLLライブラリをロード

32ビットDLLライブラリ(LoadLibraryと同じ使用法のライブラリ))をロードする方法はありますか?GetProcAddressと共にその関数を使用したいと思います。

WOWを見ましたが、機能を提供していないようです。 DependencyWalkerなどのツールは、64ビットであっても32ビットDLLのシンボルを読み取ることができるため、機能が存在するはずです。

ありがとう

36
adk

申し訳ありませんが、dllをデータファイルとしてロードする場合、32ビットDLLを64ビットプロセスにしかロードできません。コードを実行できません。 http:// support.Microsoft.com/kb/28242

64ビットアプリケーションで32ビットコードを使用するには、プロセス間COMを使用することをお勧めします。ここにプロセスを説明する記事があります http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ 面白くありません。

49
John Knoeller

32ビットの実行可能ファイルの読み取りと、32ビットの実行可能ファイル内でのコードの実行には違いがあります。 Windowsがそれを行う機能を提供するとは思わない。

できる唯一の方法は、dllをロードする32ビットプロセスを作成し、プロセス間通信を行って2つのプロセス間で結果を渡すことです。

2
Colin Newell

リソースからリソースを取得するだけであれば、データファイルとしてロードできます。

LoadLibraryEx(exeName, NULL, LOAD_LIBRARY_AS_DATAFILE);

次に、通常どおりFindResourceを呼び出します。

1
Dave F