pad*_*apa 6 java java-native-interface
我最近一直在试验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();
}
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
say
what
hola, world !
hola, world !
Run Code Online (Sandbox Code Playgroud)
本机功能如下:
Java_HelloWorld_print(JNIEnv *env, jobject obj) {
printf("hola, world !\n");
return;
}
Run Code Online (Sandbox Code Playgroud)
这是因为本地调用是在Java调用之后执行的吗
不,它几乎肯定与 C++ 和 Java 端的输出缓冲方式有关。
调用的执行顺序与代码中显示的顺序完全相同(Java、C++、Java、C++)。
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |