看ndk说明文档关于第三方库(Prebuilts)的用法,安装上面的方法试了下,结果老是连接不上,第三方库中的函数连接不到:
Administrator@4ec48ba026e34ae /cygdrive/e/myprj/hello-jni/jni
$ /cygdrive/e/work/android-ndk-r5b/ndk-build
Compile thumb : hello-jni <= hello-jni.c
SharedLibrary : libhello-jni.so
E:/myprj/hello-jni/obj/local/armeabi/objs/hello-jni/hello-jni.o: In function `
st1':
E:/myprj/hello-jni/jni/hello-jni.c:12: undefined reference to `InitWordInfo'
E:/myprj/hello-jni/jni/hello-jni.c:21: undefined reference to `debug_printf'
E:/myprj/hello-jni/jni/hello-jni.c:24: undefined reference to `debug_printf'
E:/myprj/hello-jni/jni/hello-jni.c:43: undefined reference to `debug_printf'
E:/myprj/hello-jni/jni/hello-jni.c:62: undefined reference to `debug_printf'
E:/myprj/hello-jni/jni/hello-jni.c:16: undefined reference to `debug_printf'
E:/myprj/hello-jni/obj/local/armeabi/objs/hello-jni/hello-jni.o:E:/myprj/hello
ni/jni/hello-jni.c:78: more undefined references to `debug_printf' follow
collect2: ld returned 1 exit status
make: *** [/cygdrive/e/myprj/hello-jni/obj/local/armeabi/libhello-jni.so] Erro
1
后来在网上查到原因,原来是可恶Prebuilts文档有错误
http://hi.baidu.com/nalch/blog/item/f6a1ed6aec69d2cd80cb4a59.html
LOCAL_SHARED_LIBRARIES和LOCAL_SHARED_LIBRARY:注意前者是复数S形式,用于Link多个库(只有一个也可以用),后者只能添加一个链接库,可恶的文档关于Prebuilts的介绍里面给出的例子是LOCAL_SHARED_LIBRARY,使用两个库的时候第二个库死也link不上。
Android.mk修改后,就可以连接通过了。
-
LOCAL_PATH:=$(callmy-dir)
-
-
include$(CLEAR_VARS)
-
LOCAL_MODULE:=my-init
-
LOCAL_SRC_FILES:=libinit.so
-
#LOCAL_SRC_FILES:=../../sojni/libs/armeabi/libinit.so
-
include$(PREBUILT_SHARED_LIBRARY)
-
-
include$(CLEAR_VARS)
-
LOCAL_MODULE:=hello-jni
-
#LOCAL_SHARED_LIBRARY:=my-init#应该用复数形式,否则连接不上第三方库中的函数
-
LOCAL_SHARED_LIBRARIES:=my-init
-
LOCAL_SRC_FILES:=hello-jni.c
-
include$(BUILD_SHARED_LIBRARY)
分享到:
相关推荐
ndk调用第三方sondk调用第三方sondk调用第三方sondk调用第三方so
NDK 调用第三方库的方法 1,编写基础库 libndktest.so,实现一个加法(a+b); 2,编写一个基本的android程序在 MainActivity 中调libndktest.so 并实现其中的加法; 3,对原有的外部库进行进一步封装,并实现其中的...
安卓NDK调用第三方动态库方法实例, 网上看了很多相关文章,但没有运行一个可用的实例。 参考这个实例,就容易搞了。
ndk编译时如何使用第三方库的例子(PREBUILT_SHARED_LIBRARY)
Android Studio使用第三方so库时编译的源码,AS项目
测试环境CentOS 7和Ubuntu 16.04,均可以正常生成对应库,GitHub工程至包含一个测试demo,可以执行将生成的库替换掉对应的版本,然后修改Android的ABI,编译后使用模拟器和手机安装均可正常运行
Jni中执行ndk-build,编译第三方静态库(.a)和动态库(.so)的Android.mk文件写法,这是Jni测试引用第三方静态库和动态库demo
jni入门一篇就够,含盖 jni中动态注册,静态注册;引用第三方so库,
Android CMake调用第三方库,自定义StringUtil库,使用NDK-Build编译出各平台so文件。
参考网上一些资料,实现了通过JNI调用第三方动态库.so,个人觉得重点在Make文件改写,例外注意确保程序完全正确,我开始就是程序中个字母写错而浪费了好多时间。
主要介绍了Android.mk引入第三方jar包和so库文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
AndroidStudio-NDK开发 编译c代码提供so库和jar包 另外一个app调用,实例源码
教你如何生成.h文件,使用window通过NDK编译出.so文件,如何通过JNI调用so文件
android调用第三方库,博客中hello实例,请去看博客
一个AndroidStudio项目,通过CMakelist生成jni库文件(so),jni库文件通过头文件调用c编写的第三方库(so),文:https://blog.csdn.net/qq_35532751/article/details/78667984
android studio cmake android ndk-jni动态库开发,这个可以在cmake下链接生成多个so库
《Android Studio NDK中cpp代码链接第三方动态库libcrypro.so》那篇博文对应的demo,里面有第三方链接libcrypto.so和libssl.so。
简单明了的演示NDK编程,JNI编程,到处SO库,对应API打包jar方式访问SO库,第三方通过API调用SO中的方法
jni封装第三方so测试
【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 ) 博客地址 : https://hanshuliang.blog.csdn.net/article/details/104255990 I . 动态库 与 静态库 ...