Недавно я экспериментировал с JNI, чтобы портировать некоторые существующие библиотеки C++.
В рамках тестирования я создал простую программу «helloworld». Я вызываю простую нативную функцию на C++, которая просто печатает сообщения. Мне немного любопытно некоторое поведение, которое я наблюдал при выполнении программы -. Кажется, что все сообщения/ответы нативных функций печатаются после Java System.out.print
. Это потому, что собственные вызовы выполняются после вызовов Java, или я должен просто игнорировать это поведение?
public static void main(String[] args) {
HelloWorld app = new HelloWorld();
System.out.println("say");
app.print();
System.out.println("what");
app.print();
}
Вывод выглядит следующим образом:
say
what
hola, world !
hola, world !
Собственная функция выглядит следующим образом:
Java_HelloWorld_print(JNIEnv *env, jobject obj) {
printf("hola, world !\n");
return;
}