android ubuntu jni so 报错Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI
2012-12-11 16:22
567 查看
关键在于:hello-jni.c
hello-jni.c文件内容如下:
#include
<string.h>
#include
<jni.h>
jstring
Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI(JNIEnv*
env,jobject
thiz )
{
return (*env)->NewStringUTF(env,"Hello
from NDK JNI !");
}
要注意Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI这段语句的意思。
在你的so库里面定义的方法需要跟你java工程中的包类名一致才行的。
例如你在so库中定义的native方法为:
Java_com_example_test_hellojni_HelloJni_stringFromJNI( JNIEnv*env,jobject thiz )
则你需要定义一个HelloJni的类,包名为com.example.test.hellojni,然后在HelloJni类中定义native方法tringFromJNI。这样都会找到相应的函数。
也就是说:比如如果是这样的xxx_xxx_xxx_stringFromJNI()
那么你的J***A工程里,应该有xxx_xxx这个Packeage,Packeage中有xxx这个类,类中调用。
然后打开命令行,这么搞一下:
root@hjm-H61M-DS2:~/workspace/HelloNDKJNI# $NDK/ndk-build
Compile thumb : hello-ndk-jni <=hello-jni.c
SharedLibrary : libhello-ndk-jni.so
Install :
libhello-ndk-jni.so =>libs/armeabi/libhello-ndk-jni.so
$NDK这个命令因人而异,要看在.basrch当中的环境变量设计,可以看我的前几篇当中,有介绍。
然后在项目中会多出两个文件夹。不用去管它。
最后在
static{
System.loadLibrary("libhello-ndk-jni");
}
这里确定包的名称,就可以了。
hello-jni.c文件内容如下:
#include
<string.h>
#include
<jni.h>
jstring
Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI(JNIEnv*
env,jobject
thiz )
{
return (*env)->NewStringUTF(env,"Hello
from NDK JNI !");
}
要注意Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI这段语句的意思。
在你的so库里面定义的方法需要跟你java工程中的包类名一致才行的。
例如你在so库中定义的native方法为:
Java_com_example_test_hellojni_HelloJni_stringFromJNI( JNIEnv*env,jobject thiz )
则你需要定义一个HelloJni的类,包名为com.example.test.hellojni,然后在HelloJni类中定义native方法tringFromJNI。这样都会找到相应的函数。
也就是说:比如如果是这样的xxx_xxx_xxx_stringFromJNI()
那么你的J***A工程里,应该有xxx_xxx这个Packeage,Packeage中有xxx这个类,类中调用。
然后打开命令行,这么搞一下:
root@hjm-H61M-DS2:~/workspace/HelloNDKJNI# $NDK/ndk-build
Compile thumb : hello-ndk-jni <=hello-jni.c
SharedLibrary : libhello-ndk-jni.so
Install :
libhello-ndk-jni.so =>libs/armeabi/libhello-ndk-jni.so
$NDK这个命令因人而异,要看在.basrch当中的环境变量设计,可以看我的前几篇当中,有介绍。
然后在项目中会多出两个文件夹。不用去管它。
最后在
static{
System.loadLibrary("libhello-ndk-jni");
}
这里确定包的名称,就可以了。
相关文章推荐
- android ubuntu jni so 报错Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI
- android ubuntu jni so 报错 : java.lang.UnsatisfiedLinkError: stringFromJNI ____________ndk make: *** 没
- jstring Java_com_example_hellojni_HelloJni_stringFromJNI
- NDK .so Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方案
- android jni java.lang.UnsatisfiedLinkError: stringFromJNI
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口【转】
- Android NDK Call Java From C++
- Android-NDK开发之基础--Android JNI有关Java类命名方式
- 02-android之NDK hellojni实例
- 【android NDK JNI】android-ndk-r9d+adt-bundle-windows环境搭建-Hello-jni案例说明
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Ubuntu下编译androidJNI helloJNI
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android应用---基于NDK的samples例程hello-jni学习NDK开发
- ubuntu 12.04 NDK + android 4.0.3_r1 编译libffmpeg.so
- Ubuntu下搭建 eclipse+NDK for android JNI 的开发环境
- andriod驱动之旅-在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口(6)
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- [原创]Android 基于NDK的JNI开发 C调用java和java调用C的进阶教程