1

我正在使用 android NDK 在我的应用程序中使用一个 c++ 库。当我运行我的应用程序时,我总是收到一条错误消息,即java.lang.UnsatisfiedLinkError: Native method not found.我多次检查了我的代码但我没有找到任何东西。此外,我收到了另一条错误消息No rule to make target all.

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 文件中更改什么?

4

2 回答 2

0

看起来方法的名称不正确。你能告诉我们你从java调用的方法的名称和C/C++中的方法的名称吗?

编辑:这可能包含更多信息: http: //www.netmite.com/android/mydroid/2.0/development/ndk/docs/ANDROID-MK.TXT规范状态 LOCAL_PATH 应该在第一行。还要寻找隐藏的空白。

于 2012-12-19T05:12:48.127 回答
0

鉴于您在评论中提到您的代码适用于较小的测试应用程序而不是较大的应用程序,请确保较大的应用程序实际上是在 Java Activity 中加载库,如下所示:

// Load the .so
static {
    System.loadLibrary("libmy-jni-module");
}
于 2012-12-19T14:47:06.700 回答