我有一個NDK庫和相應的Java類的工作實現。但我無法將重載的方法添加到該類。目前我的類包含:在Android NDK中編寫本機方法簽名的正確方法是什麼?
package com.package;
public class MyClass
{
public static native String getFileName();
static
{
System.loadLibrary("mylib");
}
}
我jniwrappers.cpp文件具有以下聲明:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName(_JNIEnv* env, jobject thiz);
到目前爲止一切正常。但接下來我修改我的課:
package com.package;
public class MyClass
{
public static native String getFileName();
public static native String getFileName(int index);
...
}
,並加入到jniwrappers.cpp另一聲明:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName__I(_JNIEnv* env, jobject thiz, jint index);
它編譯罰款,Android應用程序啓動時,沒有得到UnsatisfiedLinkError但是當它調用第二個方法與第一個C++函數被調用的參數,但不是第二個。我有其他的方法在該類中的參數,但沒有重載,所以他們各自的JNI簽名不包含參數。
那麼,我做錯了什麼?
這是我嘗試的第一件事,但出錯了,我得到了UnsatisfiedLinkError。現在我重試了這一切,並使一切正常。非常感謝! – 2010-10-27 18:03:09