2013-03-15 6 views
7

HelloWorld.libをビルドし、JNIを使​​用してJavaアプリケーションにロードすることは可能ですか?それとも、共有ライブラリだけで動作しますか?静的ライブラリをJNI経由でJavaにリンクすることはできますか?

私は、JNIのドキュメントに明確な答えを見つけることができなかった、「静的ライブラリ」への言及はありません。

+0

チェックhttp://stackoverflow.com/questions/2349093/static-libraries-and-jni – BackSlash

+0

@Harlandraka私が投稿する前に質問を見ましたが、リンクがあるネイティブライブラリをリンクしサポートしていますデッド。また、今質問 - コメントの代わりに直接質問 - 回答です。 – quimnuss

答えて

3

動的ライブラリである必要があります。幸いにも、静的ライブラリから動的ライブラリを構築することができます。それはDLL(Windowsの場合)にする必要があり、実行時にライブラリをロードするために

+0

ちょうど私が思ったように...だから、静的ライブラリを-fPICフラグを使って再コンパイルする必要があると思います。 – quimnuss

+0

または、ダイナミック/共有ライブラリにラップして、再コンパイルする必要がないようにします。 –

+0

リンクを貼り付けることができますか?fPICでコンパイルされていないスタティックライブラリから共有ライブラリを取得するにはどうすればよいですか? – quimnuss

1

。静的ライブラリ(lib)をお持ちで、JNI経由で使用する必要がある場合は、ラッパーDLLを作成する必要があります

0

これをJVMにリンクする必要があり、その方法はありません。そのため、JNIは静的ライブラリではなく共有ライブラリで定義されています。

関連する問題