を使用したい共有ライブラリを使用してJNIコードをリンクすることを確認します。
あなたはここでのサンプルコードを見てみることができます。このサンプルで
https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo023
をあなたはJNI機能があります。
JNIEXPORT void JNICALL Java_recipeNo023_HelloWorld_displayMessage
(JNIEnv *env, jclass obj) {
printf("Hello world!\n");
/* We are calling function from another source */
anotherFunction();
}
いくつかの外部の共有ライブラリ
void anotherFunction() {
// we are printing message from another C file
printf("Hello from another function!\n");
}
から関数を呼び出します
あなたのJNIライブラリi使用するライブラリとリンク(S)このサンプルで
cc -g -shared -fpic -I${JAVA_HOME}/include -I${JAVA_HOME}/include/$(ARCH) c/recipeNo023_HelloWorld.c -L./lib -lAnotherFunction -o lib/libHelloWorld.$(EXT)
-L./lib -lAnotherFunction
は、JNIコードを含むライブラリ内の利用可能なシンボルがない含まれているこの「その他」のライブラリを使用するようにコンパイラに指示します。
出典
2016-11-16 16:42:14
mko
何か(静的にまたは動的に)PBCライブラリをリンクしていますか? – LPs
Cプログラムでは、私はそれらだけを含んでいます、私は別のものを作らなければなりませんか? – Tortxu13
それは依存します:libをあなたの共有ライブラリに静的にリンクすることもできますし、共有PBCライブラリを最終アプリケーションのリンクコマンドに追加することもできます。 – LPs