結局のところ、NDK用にEclipseを「準備」することができました(少なくとも私はそう思います)。Cコードではもう議論しませんが、ネイティブコードを実行するたびに「ネイティブLcomの実装が見つかりません」というメッセージが表示されます。 . NDK のサンプルでも発生します..
私の.java
...
private native float pi();
static
{
System.loadLibrary("shit");
}
...
System.out.println(pi());
...
私の.cpp
#include <jni.h>
jfloat Java_com_example_shit_MainActivity_pi(JNIEnv * env, jobject obj) {
return 3.1415;
}
私の.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := shit
LOCAL_SRC_FILES := shit.cpp
include $(BUILD_SHARED_LIBRARY)
私のエラーログ
11-14 18:30:16.231: D/dalvikvm(1739): Trying to load lib /data/data/com.example.shit/lib/libshit.so 0x413b1fc8
11-14 18:30:16.241: D/dalvikvm(1739): Added shared lib /data/data/com.example.shit/lib/libshit.so 0x413b1fc8
11-14 18:30:16.241: D/dalvikvm(1739): No JNI_OnLoad found in /data/data/com.example.shit/lib/libshit.so 0x413b1fc8, skipping init
11-14 18:30:16.271: D/TextLayoutCache(1739): Using debug level: 0 - Debug Enabled: 0
11-14 18:30:17.913: W/dalvikvm(1739): No implementation found for native Lcom/example/shit/MainActivity;.pi ()F
11-14 18:30:17.913: D/AndroidRuntime(1739): Shutting down VM
11-14 18:30:17.913: W/dalvikvm(1739): threadid=1: thread exiting with uncaught exception (group=0x40ab1210)
11-14 18:30:17.923: E/AndroidRuntime(1739): FATAL EXCEPTION: main
11-14 18:30:17.923: E/AndroidRuntime(1739): java.lang.IllegalStateException: Could not execute method of the activity
...
11-14 18:30:17.923: E/AndroidRuntime(1739): at dalvik.system.NativeStart.main(Native Method)
...
11-14 18:30:17.923: E/AndroidRuntime(1739): Caused by: java.lang.UnsatisfiedLinkError: pi
11-14 18:30:17.923: E/AndroidRuntime(1739): at com.example.shit.MainActivity.pi(Native Method)
11-14 18:30:17.923: E/AndroidRuntime(1739): at com.example.shit.MainActivity.doit(MainActivity.java:31)
...
「ネイティブの実装が見つかりません」という気になるのはなぜですか???