Java jni编译cpp和c之间的区别是什么?

Java jni编译cpp和c之间的区别是什么?,java,java-native-interface,Java,Java Native Interface,测试c < C++ > JNI与J.Ni的C.N/P>略有不同。 在普通C中使用:*env->SomeFunctionenv,arg,arg 请注意,必须取消对env的引用,并且函数的第一个参数始终是env 在C++中,它是不同的。您可以使用:env->somefunctorg,arg 您不需要取消对env的引用,也不需要将env作为第一个参数传递 对Java的实际调用将是相同的。java不在乎你使用纯C还是C++来做JNI的东西。 这里介绍了使用C++进行JNI的快速介绍。 #include

测试c


< C++ > JNI与J.Ni的C.N/P>略有不同。 在普通C中使用:*env->SomeFunctionenv,arg,arg

请注意,必须取消对env的引用,并且函数的第一个参数始终是env

在C++中,它是不同的。您可以使用:env->somefunctorg,arg

您不需要取消对env的引用,也不需要将env作为第一个参数传递

对Java的实际调用将是相同的。java不在乎你使用纯C还是C++来做JNI的东西。

这里介绍了使用C++进行JNI的快速介绍。

#include <string.h>
#include <jni.h>
#include <android/log.h>
#include <stdio.h>
#include <stdlib.h>

jstring Java_com_test_b_hello_hellostr( JNIEnv* env,jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}
.
    void        (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*);
    jstring     (*NewStringUTF)(JNIEnv*, const char*);
    jsize       (*GetStringUTFLength)(JNIEnv*, jstring);
...
    jstring NewStringUTF(const char* bytes)
    { return functions->NewStringUTF(this, bytes); }
.....