2

JNA を使用して Java アプリから .dll ファイルを呼び出そうとしています。次の例外が発生します。

スレッド「メイン」での例外 java.lang.UnsatisfiedLinkError: ライブラリ 'C:\Windows\System32\foo.dll' を読み込めません: 指定されたモジュールが見つかりませんでした。

.dll と jdk はどちらも 32 ビット (OS_ARCH="i586") ですが、64 ビットの Windows 7 PC で実行しています。
.dll は System32 フォルダーにあります。

私は Eclipse を使用しており、Java ビルド パス プロパティの [ライブラリ] タブの下にある JRE システム ライブラリのネイティブ ライブラリの場所に System32 フォルダーを追加しました (ただし、これは必要ではないと思います)。

助けや提案をいただければ幸いです。
ありがとう、
ムンク。

4

4 に答える 4

1

これは、ファイル システム リダイレクタにまで及びます。64 ビット システムで 32 ビット Windows をエミュレートする WOW64 エミュレーターで実行しています。WOW64 では、system32は にリダイレクトされSysWOW64ます。そこに DLL を配置する必要があります。

そうは言っても、システムディレクトリはシステムによって所有され、システムにプライベートです。DLL をシステム ディレクトリに配置しないことが期待されます。DLL を別の場所に配置する方法を見つける必要があります。

于 2013-07-17T11:45:11.737 に答える
0

エラーのもう 1 つの理由は、dll が 64 ビット OS ではなく 32 バージョンでのみサポートされていることです。dll ベンダーを確認する必要があります。

于 2013-07-17T11:57:12.663 に答える