6

Java 機能を呼び出す必要がある Visual Studio C++ プロジェクトがあります。私はJNIを使​​用するつもりです。追加のインクルード ディレクトリを指定しました。

C:\Program Files (x86)\Java\jdk1.7.0_10\include

C:\Program Files (x86)\Java\jdk1.7.0_10\include\win32

および追加のライブラリ ディレクトリ

C:\Program Files (x86)\Java\jdk1.7.0_10\lib

必要なコードをコンパイルできました。しかし、次のエラーのためにまだ実行できません:

The program can't start bacause jvm.dll is missing...

最も簡単な方法は、dll をプロジェクト ディレクトリにコピーすることだと思います。でもどっちか分からない。たとえば、いくつかの異なるものを見つけました。

C:\Program Files (x86)\Java\jdk1.7.0_10\jre\bin\client\jvm.dll

C:\Program Files (x86)\Java\jdk1.7.0_10\jre\bin\server\jvm.dll

C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll

では、どれをコピーすればよいのでしょうか。

4

1 に答える 1

4

問題を解決しようとしているのは間違っています。コピーすることは期待されていませんがjvm.dll、適切なJAVA_HOME環境変数を設定して、C:\Program Files (x86)\Java\jdk1.7.0_10\またはC:\Program Files (x86)\Java\jre7\. DLL のバージョンは、javaパラメーター-clientまたは-server(パラメーターがない場合の既定値) によって選択されます。

更新:質問を読み直して、シナリオがネイティブプログラムを実行していて、(より一般的な)JVMからネイティブライブラリを呼び出すのではなく、そこからJVMを呼び出すことがわかりました。その場合、ネイティブ プログラムは実際に にアクセスする必要がありますjvm.dll。JVM からネイティブ ライブラリを呼び出す場合、jvm.dllはすでに JVM によってプリロードされており、ネイティブ ライブラリはそれを気にする必要はありません。

于 2012-12-17T16:21:30.670 に答える