NDK kitaplığı ve ilgili Java sınıfı ile ilgili bir çalışma uygulamam var. Ancak bu sınıfa aşırı yüklenen yöntemi ekleyemiyorum. Şu anda benim sınıf içerir:Android NDK'da yerel yöntem imzaları yazmanın doğru yolu nedir?
package com.package;
public class MyClass
{
public static native String getFileName();
static
{
System.loadLibrary("mylib");
}
}
Benim jniwrappers.cpp dosyası aşağıdaki bildiriyi sahiptir:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName(_JNIEnv* env, jobject thiz);
bu nokta her şeyi kadar çalışıyor cezası. Ama gelecek benim sınıf değiştirin:
package com.package;
public class MyClass
{
public static native String getFileName();
public static native String getFileName(int index);
...
}
Ve başka beyanı jniwrappers.cpp eklemek: Bu ince, Android uygulama başlar derler
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName__I(_JNIEnv* env, jobject thiz, jint index);
, UnsatisfiedLinkError almaz ancak ikinci yöntemi ile çağırdığında argüman ilk C++ fonksiyonu çağrılıyor ama ikinci değil. Bu sınıftaki argümanlarla başka yöntemlerim var ama bunların hiçbiri aşırı yüklenmiyor, dolayısıyla ilgili JNI imzaları argüman içermiyor.
Peki, ne yapıyorum yanlış?
Bu, denediğim ilk şeydi ancak bir şeyler ters gitti ve UnsatisfiedLinkError'ım var. Şimdi bunu tekrar denedim ve herşeyi işe aldım. Çok teşekkürler! –