我最近一直在试验 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;
}