mylib.c文件为:
#include <string.h>
#include <jni.h>
JNIEXPORT jint JNICALL
Java_org_eshock_jnitest_JNITest_plus( JNIEnv* env,
jobject thiz,
jint x,
jint y )
{
return x + y;
} ndk-build后 jnitest\libs\armeabi\libmylib.so
jnitest为eclipse里的android项目名,调用sopublic class JnitestActivity extends Activity {
public native int plus (int x, int y); @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(getApplicationContext());
int x = plus(1, 2);
tv.setText("okgyymj");
setContentView(tv); }
static {
System.loadLibrary("mylib");
}
}
运行后,出现错误,logcat的信息如下:
11-17 12:33:06.357: D/dalvikvm(383): Trying to load lib /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0
11-17 12:33:06.367: D/dalvikvm(383): Added shared lib /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0
11-17 12:33:06.367: D/dalvikvm(383): No JNI_OnLoad found in /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0, skipping init
11-17 12:33:44.847: D/dalvikvm(412): Trying to load lib /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0
11-17 12:33:44.866: D/dalvikvm(412): Added shared lib /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0
11-17 12:33:44.866: D/dalvikvm(412): No JNI_OnLoad found in /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0, skipping init
11-17 12:33:44.906: W/dalvikvm(412): No implementation found for native Lorg/eshock/jnitest/JnitestActivity;.plus (II)I
11-17 12:33:44.906: D/AndroidRuntime(412): Shutting down VM
11-17 12:33:44.906: W/dalvikvm(412): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-17 12:33:44.936: E/AndroidRuntime(412): FATAL EXCEPTION: main
11-17 12:33:44.936: E/AndroidRuntime(412): java.lang.UnsatisfiedLinkError: plus
11-17 12:33:44.936: E/AndroidRuntime(412): at org.eshock.jnitest.JnitestActivity.plus(Native Method)
11-17 12:33:44.936: E/AndroidRuntime(412): at org.eshock.jnitest.JnitestActivity.onCreate(JnitestActivity.java:17)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.os.Handler.dispatchMessage(Handler.java:99)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.os.Looper.loop(Looper.java:123)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-17 12:33:44.936: E/AndroidRuntime(412): at java.lang.reflect.Method.invokeNative(Native Method)
11-17 12:33:44.936: E/AndroidRuntime(412): at java.lang.reflect.Method.invoke(Method.java:521)
11-17 12:33:44.936: E/AndroidRuntime(412): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-17 12:33:44.936: E/AndroidRuntime(412): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-17 12:33:44.936: E/AndroidRuntime(412): at dalvik.system.NativeStart.main(Native Method)
11-17 12:34:05.767: I/Process(412): Sending signal. PID: 412 SIG: 9
这个可能的原因是什么呢?多谢指点。
#include <string.h>
#include <jni.h>
JNIEXPORT jint JNICALL
Java_org_eshock_jnitest_JNITest_plus( JNIEnv* env,
jobject thiz,
jint x,
jint y )
{
return x + y;
} ndk-build后 jnitest\libs\armeabi\libmylib.so
jnitest为eclipse里的android项目名,调用sopublic class JnitestActivity extends Activity {
public native int plus (int x, int y); @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(getApplicationContext());
int x = plus(1, 2);
tv.setText("okgyymj");
setContentView(tv); }
static {
System.loadLibrary("mylib");
}
}
运行后,出现错误,logcat的信息如下:
11-17 12:33:06.357: D/dalvikvm(383): Trying to load lib /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0
11-17 12:33:06.367: D/dalvikvm(383): Added shared lib /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0
11-17 12:33:06.367: D/dalvikvm(383): No JNI_OnLoad found in /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0, skipping init
11-17 12:33:44.847: D/dalvikvm(412): Trying to load lib /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0
11-17 12:33:44.866: D/dalvikvm(412): Added shared lib /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0
11-17 12:33:44.866: D/dalvikvm(412): No JNI_OnLoad found in /data/data/org.eshock.jnitest/lib/libmylib.so 0x44ede9f0, skipping init
11-17 12:33:44.906: W/dalvikvm(412): No implementation found for native Lorg/eshock/jnitest/JnitestActivity;.plus (II)I
11-17 12:33:44.906: D/AndroidRuntime(412): Shutting down VM
11-17 12:33:44.906: W/dalvikvm(412): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-17 12:33:44.936: E/AndroidRuntime(412): FATAL EXCEPTION: main
11-17 12:33:44.936: E/AndroidRuntime(412): java.lang.UnsatisfiedLinkError: plus
11-17 12:33:44.936: E/AndroidRuntime(412): at org.eshock.jnitest.JnitestActivity.plus(Native Method)
11-17 12:33:44.936: E/AndroidRuntime(412): at org.eshock.jnitest.JnitestActivity.onCreate(JnitestActivity.java:17)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.os.Handler.dispatchMessage(Handler.java:99)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.os.Looper.loop(Looper.java:123)
11-17 12:33:44.936: E/AndroidRuntime(412): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-17 12:33:44.936: E/AndroidRuntime(412): at java.lang.reflect.Method.invokeNative(Native Method)
11-17 12:33:44.936: E/AndroidRuntime(412): at java.lang.reflect.Method.invoke(Method.java:521)
11-17 12:33:44.936: E/AndroidRuntime(412): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-17 12:33:44.936: E/AndroidRuntime(412): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-17 12:33:44.936: E/AndroidRuntime(412): at dalvik.system.NativeStart.main(Native Method)
11-17 12:34:05.767: I/Process(412): Sending signal. PID: 412 SIG: 9
这个可能的原因是什么呢?多谢指点。
解决方案 »
- 菜鸟求解!android模拟器启动问题
- 安装ANDROID的SDK时,升级失败
- 如何设置自定义软键盘
- 大家好,我用控件ListView作为一个主页面,他的列表下的item页作为子页,在子页里设置一个ImageButton返到ListView页面,担返回是空白的
- 菜鸟提问:使用包名调用应用
- notification如何在一个图标里显示多条记录?
- 无法正确获得点击时的X.Y值?全屏时无法截获ontouch()事件??
- 菜鸟咨询一个Android开发入门的问题
- Android 手机灭屏后获取重力感应传感器数据
- imx6开发板上,插拔鼠标时,会引起Activity重新加载
- Android调用系统相机问题,返回没有图像。G14测试未通过???
- 为啥我的程序在es任务管理器里看不见
就是Java_org_eshock_jnitest_JNITest_plus
这个没写对。
javah什么的弱爆了,JNINativeMethod要方便简洁的多,而且在多函数方便更有优势