Poniżej znajduje się funkcja otoki JNI który ma dwa parametry i zwraca prymitywną tablicę obiektów:
jobjectArray Java_com_gnychis_awmon_Test(JNIEnv* env, jobject thiz);
Od nazwy funkcji dałeś I nie sądzę, że jest kompletna, to znaczy, nie przestrzegają obowiązkową nazwisko funkcja konwencję, która jest:
Uruchomić funkcję z Java_
Dołącz nazwa pakietu wrz arated by _ (nie powiem), czyli com_company_awesomeapp. Do tej pory nazwa funkcji składa się z: Java_com_company_awesomeapp
Dołącz nazwę klasy Java, w której została zdefiniowana natywna metoda, , po której następuje faktyczna nazwa funkcji. Więc w tym momencie powinniśmy mieć następującą nazwę funkcji: Java_com_company_awesomeapp_MainActivity_Test
Pierwszym parametrem jest wskaźnik do struktury przechowywania wszystkich wskaźników funkcji JNI, czyli wszystko the predefined functions you have available po ciebie #include <jni.h>
.
Drugim parametrem jest odniesienie do obiektu Java wewnątrz których natywny metoda została zadeklarowana.You can use it to call the other methods of the Java object od bieżącej funkcji JNI, to znaczy połączenia Java metody przykład wynosić od kodu JNI napisany w języku C i C++.
Jeśli na przykład masz następujące klasy Java wewnątrz pliku MainActivity.java:
public class MainActivity extends Activity
{
static
{
try
{
System.loadLibrary("mynativelib");
}
catch (UnsatisfiedLinkError ule)
{
Log.e(TAG, "WARNING: Could not load native library: " + ule.getMessage());
}
}
public static native Object[] Test();
}
Następnie jobject thiz parametr funkcji JNI byłoby odniesienie do obiektu typu główną działalność.
"to" jest słowem kluczowym."thiz" jest legalną nazwą zmiennej, która może być użyta do "obiektu" to ". – paulsm4