我正在使用android NDK在我的應用程序中使用一個c + +庫。當我運行我的應用程序時,我總是收到一條錯誤消息,它是java.lang.UnsatisfiedLinkError: Native method not found.
我檢查了我的代碼多次,但是我沒有找到任何東西。而且我得到了另一條錯誤消息是No rule to make target all.
Android NDK:沒有規則使目標全部和本地方法沒有找到
LOCAL_C_INCLUDES += ${NDKROOT}/sources/cxx-stl/stlport/stlport
LOCAL_PATH := $(call my-dir)
LOCAL_ALLOW_UNDEFINED_SYMBOLS = true
include $(CLEAR_VARS)
LOCAL_MODULE := my-module-jni
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*/*.cpp)
include $(BUILD_SHARED_LIBRARY)
extern "C" {
JNIEXPORT jstring JNICALL
Java_com_test_ndk_MyClassName_test
(JNIEnv *env, jobject obj)
{
return env->NewStringUTF("Hello from C++ over JNI!");
}
}
public class MyClassName extends Activity{
public static native String test();
......
}
在我的JNI文件夾中我有很多C++類和文件夾。我認爲問題是我的android.mk文件。 我應該在我的android.mk文件中更改什麼?
當我嘗試的System.loadLibrary(「libmylib.so」),我收到錯誤消息「Libray找不到」。如果我嘗試System.loadLibrary(「mylib」),我收到錯誤信息「找不到本機方法」。我可以在我的項目目錄中看到libmylib.so文件。 – SavasCinar
好的,我從內存中錯誤地解析了.so文件。您能否發佈本地方法的聲明,因爲它出現在您的Java源文件中,包括它所在類的名稱和包? –
對不起,我不明白。我應該發佈什麼?我寫了方法聲明。 – SavasCinar