gccを使用してWindows 7用のJavaネイティブライブラリを構築しようとしています。 私はそれをコンパイルしてビルドします。Windows 7用Javaネイティブライブラリprintf
テストとして、私はネイティブコードでprintf()
を実行しようとしています。 test.cので
gcc -o Test.so -shared -O -I/home/fred/jdk1.8.0_65/include -I/home/fred/jdk1.8.0_65/include/linux Test.c
:それはprintf関数から戻らない実行
JNIEXPORT void JNICALL Java_Test_print(JNIEnv *env, jobject jo) {
printf("Test\n");
}
()。
printf()Java_Test_print()が削除された場合は返されます。
printf()をwhile(1){}に置き換えた場合、予期したとおりに がハングします。
私はネイティブコードになっていますが、それはprintf()
から戻ってこないし、JVMをクラッシュさせます。
dddのlddは、/usr/bin/cygwin1.dll
を使用していることを示しています。
呼び出し規約に問題があると思われます。そのような場合でも、私はそれについて何をするべきではありません。
誰もWindows用のネイティブライブラリを開発できましたか?またはポインタを持ってください。ありがとう!
あなたは 'stdio.h'が含まれたのですか?あなたに何か警告がありますか? –