Android NDK未满足链接错误

Android NDK未满足链接错误,android,android-ndk,native-code,unsatisfiedlinkerror,Android,Android Ndk,Native Code,Unsatisfiedlinkerror,首先为我的英语不好感到抱歉。我将在本机应用程序编程中阅读。 我做了​​本教程:mindthrobot.com/blog/452/android-初学者-ndk-setup-step-by-step/ Eclipse不会带来错误代码或其他东西,但当我在手机上启动应用程序时,会收到错误消息“应用程序意外退出” 在日志中,我收到以下错误消息: 10-12 15:14:34.400: D/mytag(1435): vor LiberyLoad 10-12 15:14:34.400: D/dalvikvm

首先为我的英语不好感到抱歉。我将在本机应用程序编程中阅读。 我做了​​本教程:mindthrobot.com/blog/452/android-初学者-ndk-setup-step-by-step/

Eclipse不会带来错误代码或其他东西,但当我在手机上启动应用程序时,会收到错误消息“应用程序意外退出”

在日志中,我收到以下错误消息:

10-12 15:14:34.400: D/mytag(1435): vor LiberyLoad
10-12 15:14:34.400: D/dalvikvm(1435): Trying to load lib /data/data/com.example.nativeappc/lib/libndkfoo.so 0x4051d5e0
10-12 15:14:34.405: D/dalvikvm(1435): Added shared lib /data/data/com.example.nativeappc/lib/libndkfoo.so 0x4051d5e0
10-12 15:14:34.405: D/dalvikvm(1435): No JNI_OnLoad found in /data/data/com.example.nativeappc/lib/libndkfoo.so 0x4051d5e0, skipping init
10-12 15:14:34.405: D/mytag(1435): nach LiberyLoad
10-12 15:14:34.485: D/dalvikvm(1435): GC_EXTERNAL_ALLOC freed 45K, 50% free 2709K/5379K, external 0K/0K, paused 67ms
10-12 15:14:34.505: W/dalvikvm(1435): No implementation found for native Lcom/example/nativeappc/MainActivity;.invokeNativeFunction ()Ljava/lang/String;
10-12 15:14:34.505: D/AndroidRuntime(1435): Shutting down VM
10-12 15:14:34.505: W/dalvikvm(1435): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
10-12 15:14:34.505: E/AndroidRuntime(1435): FATAL EXCEPTION: main
10-12 15:14:34.505: E/AndroidRuntime(1435): java.lang.UnsatisfiedLinkError: invokeNativeFunction
10-12 15:14:34.505: E/AndroidRuntime(1435): at com.example.nativeappc.MainActivity.invokeNativeFunction(Native Method)
10-12 15:14:34.505: E/AndroidRuntime(1435): at com.example.nativeappc.MainActivity.onCreate(MainActivity.java:35)
10-12 15:14:34.505: E/AndroidRuntime(1435): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-12 15:14:34.505: E/AndroidRuntime(1435): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
10-12 15:14:34.505: E/AndroidRuntime(1435): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
10-12 15:14:34.505: E/AndroidRuntime(1435): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-12 15:14:34.505: E/AndroidRuntime(1435): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
10-12 15:14:34.505: E/AndroidRuntime(1435): at android.os.Handler.dispatchMessage(Handler.java:99)
10-12 15:14:34.505: E/AndroidRuntime(1435): at android.os.Looper.loop(Looper.java:130)
10-12 15:14:34.505: E/AndroidRuntime(1435): at android.app.ActivityThread.main(ActivityThread.java:3691)
10-12 15:14:34.505: E/AndroidRuntime(1435): at java.lang.reflect.Method.invokeNative(Native Method)
10-12 15:14:34.505: E/AndroidRuntime(1435): at java.lang.reflect.Method.invoke(Method.java:507)
10-12 15:14:34.505: E/AndroidRuntime(1435): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
10-12 15:14:34.505: E/AndroidRuntime(1435): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
10-12 15:14:34.505: E/AndroidRuntime(1435): at dalvik.system.NativeStart.main(Native Method)
我的代码文件如下所示:

主要活动:

package com.example.nativeappc;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity
{
    static 
    {
        Log.d("mytag", "vor LiberyLoad");
        System.loadLibrary("ndkfoo");
        Log.d("mytag", "nach LiberyLoad");
    }

    private native String invokeNativeFunction();

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // this is where we call the native code
        String hello = invokeNativeFunction();
        Log.d("mytag", "vor ALERT");
        new AlertDialog.Builder(this).setMessage(hello).show();
        Log.d("mytag", "nach ALERT");
    }
}
Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Here we give our module name and source file(s)
LOCAL_MODULE    := ndkfoo
LOCAL_SRC_FILES := ndkfoo.c

include $(BUILD_SHARED_LIBRARY)
ndkfoo.c:

#include <string.h>
#include <jni.h>

JNIEXPORT jstring com_example_nativeapp_c_mainactivity_invokeNativeFunction(JNIEnv* env, jobject javaThis)
{
  return (*env)->NewStringUTF(env, "Hello from native code!");
}
#包括
#包括
JNIEXPORT jstring com_示例_nativeapp_c_mainactivity_invokeNativeFunction(JNIEnv*env,jobject javaThis)
{
return(*env)->NewStringUTF(env,“来自本机代码的你好!”);
}
也会生成“.so”文件。 我已经在谷歌上搜索了两天,但没有找到解决办法。 希望你能帮助我

com_example_nativeapp_c_mainactivity_invokeNativeFunction
应该是

com_example_nativeappc_MainActivity_invokeNativeFunction
或者,使用显式注册

如果你还没有,一定要通读这一页