java "native-lib"
package primeno.naval.com.primenumberusingndk;
static
{
System.loadLibrary("native-lib");
}
CPP
public native String stringFromJNI();
public native boolean isPrime(int n);
cpp
extern "C"
JNIEXPORT jstring JNICALL Java_primeno_naval_com_primenumberusingndk_MainActivity_stringFromJNI(
JNIEnv *env,
jobject ) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
extern "C"
JNIEXPORT jboolean JNICALL Java_primeno_naval_com_primenumberusingndk_MainActivity_isPrime(JNIEnv *env,jobject ,jint no)
{
PrimeNumber primeNumber(no);
return primeNumber.isPrime();
}
extern "C" {
JNIEXPORT jstring JNICALL Java_primeno_naval_com_primenumberusingndk_MainActivity_stringFromJNI(
JNIEnv *env,
jobject ) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
JNIEXPORT jboolean JNICALL Java_primeno_naval_com_primenumberusingndk_MainActivity_isPrime(JNIEnv *env,jobject ,jint no)
{
PrimeNumber primeNumber(no);
return primeNumber.isPrime();
}
}
, extern "C" cpp,
extern "C" JNIEXPORT <RETURN_TYPE> JNICALL Java_<PACKAGE_NAME>_<JAVA_CLASS>_<METHOD_NAME>(
JNIEnv *env, jobject obj, <METHOD_PARAMETERS>...) {
...
}
extern "C":
, ++ C. , ++ , , ++ , C. extern "C" Java ( ). , , ++, C.
JNIEXPORT:
, .
<RETURN_TYPE>:
JNI, Java. , jstring, String Java.
JNICALL: C
, , JNI.
<JAVA_CLASS>:
Java- . MainActivity, Java, .
<PACKAGE_NAME>:
, <JAVA_CLASS>. (.) (_).
<METHOD_NAME>:
, . getNativeString(). getNativeString().
JNIEnv *env:
(, ), JNI, , , NewStringUTF (). , #include.
jobject obj:
Java-, <JAVA_CLASS>.
<METHOD_PARAMETERS>...:
-, . getNativeString() , , .