2

Windows7でJava1.7.0を使用していて、にある64ビットdllを読み込もうとしていますC:/Program Files (x86)/Common Files/app_name/。次のエラーが発生します

 Exception in thread "main" java.lang.UnsatisfiedLinkError:
 C:\Program Files (x86)\Common Files\app_name\app.dll: %1
 is not a valid Win32 application

dllを別のディレクトリ(つまりC:\Temp)にコピーし、dllを正常にロードできました。Program Files (x86)このエラーは、dllがの下にあり、Javaが32ビットdllとしてロードしようとしていることが原因だと思います。JVMは、dllのアンダーProgram Filesとについて特定の仮定をしProgram Files (x86)ますか?

4

1 に答える 1

0

それは確かに道の問題ではありません。唯一の問題は、使用している JavaVM のバージョンです。Java の 32 ビット バージョンの場合、DLL を 32 ビット DLL としてロードしようとします。Java の 64 ビット バージョンの場合、DLL を 64 ビット DLL としてロードしようとします。

つまり、システムに 32 ビットの Java しかインストールされておらず、64 ビットの DLL をロードしようとします。または - 32 ビットと 64 ビットの両方の Java がインストールされている場合は、テストに 64 ビット バージョンを使用していることを確認する必要があります。

別のフォルダーから DLL を正常に使用したと主張するという事実は、後者を示唆しているため、使用する Java 実行可能ファイルが 64 ビット バージョンであることを確認してください。

于 2013-03-24T21:12:31.163 に答える