2017-02-04 26 views
0

私はJavaコードとCコードを接続するための手段としてJNIを使​​用しています。JNIネイティブライブラリを読み込めません

コードは罰金コンパイルし、画面のGUIアプリケーションが開き、私はプログラムを実行するときC.

しかし、出力コンソールが、すぐに私に語った純粋であるウィッヒは、コードウィッヒの一部とその注目に間違ったことを意味閉じます。

Error occurred during initialization of VM 
Unable to load native library: Can't find dependent libraries 

を返し、エラーコードとして1を返します。 exeの同じフォルダにjvm.dllがあり、JDK PATHが正しく設定されていると思います。私は問題が何であるかの手がかりを得ていません。

エラーを検索しましたが、修正できませんでした。

+0

あなたのビルド環境に関する詳細をお知らせください。 MinGW? Visual Studio? – samgak

+0

@samgak MinGWをコードと共に使う:blocks IDE – Primemaster

答えて

1

このエラーは、Java VMが.dllを検索して読み込もうとしていますが、.dllが依存する追加の.dllが見つからないことを意味します。 1つのオプションは、これらの余分な依存関係がPATHにあることを確認することですが、インストール中に環境変数を設定したり、実行時に設定したり、追加の.dllを同じフォルダに配置したりするため、

それを修正する別の方法は、あなたの.dllをリンクするとき(これは.dllファイルへあなたコードをパッケージ化するようにリンカーに指示します-sharedオプションと相互に排他的ではないことに注意してください)-staticリンカフラグを使用することです。これは、実行時に配置する必要がなく、追加の依存関係が静的に.dllにリンクされることを意味します。

+0

'-static'フラグを追加すると、他のライブラリが壊れているようです。いくつかの 'SDL2'関数への未定義参照を取得します。私は 'dependency walker'を使用しようとしましたが、プロファイリングの途中でクラッシュしました。 – Primemaster

+0

この質問(と同様のもの)をチェック:http://stackoverflow.com/questions/20303032/unable-to-successfully-link-to-sdl2-libs-i-get-undefined-reference-for-all-sdlまた、それがうまくいかない場合は、あなたの質問にあなたのリンカーの引数文字列を追加してください – samgak

関連する問題