ndk编译 错误:dlopen failed:cannot locate symbol "一个符号" referenced by "你的库.so/.a" lang.UnsatisfiedLinkErr
来源:互联网 发布:手机 截gif软件 编辑:程序博客网 时间:2024/06/04 19:45
最近在某家公司做实习生,从事移植工作,公司要求将以前跑在linux老设备上的程序移植到android平台上。项目很大一部分是c++写的,所以需要用ndk把所有源代码编到android平台下,当然也包括所依赖的第三方库。第三方库还比较好说,因为boost,openssl,websocket这些库要么对android有很好的支持,要么有开源项目去辅助支持。所以主要工作还是编译源代码问题,代码量相当庞大。
因为在学校的时候很少做c++开发和编译工作,所以解决问题很困难,这几天就有一个很怪异的问题缠绕着我。
问题是这样的,由于保密措施,项目代码都是分离的,每个人都只有自己的一部分。所以我的同事需要用ndk编好他的代码和他依赖的第三方库,编程.a库,然后另一个同事再依赖前一个同事 的.a库和第三方库,这样一层一层..........最后我拿到这个模块的库再去编。
结果出问题了,在用jni去调这个库的时候:
cao,这是怎么回事?他说找不到这个符号,但打开.a文件,可以看到这个符号。于是就怀疑库是不是没引进来,问了下同事,同事说.a的库编译的时候其他库都会引进来。但看了看文件大小,模块的.a库只有7M,但那些第三方库却有几百M,很明显,没引进来。google了一下,是mk文件有问题。
最后一句include $(PREBUILT_STATIC_LIBRARY),预编译的模块不会出发构建过程。只是把预编译的共享库拷贝到$PROJECT/obj/local路径,静态库则是拷贝到$PROJECT/libs/并进行裁剪。
所以,如果我要编这个模块的话,要把每个同事所依赖的.a全部引进来。没错,全部。
测试通过,成功跑起。
- ndk编译 错误:dlopen failed:cannot locate symbol "一个符号" referenced by "你的库.so/.a" lang.UnsatisfiedLinkErr
- dlopen failed: cannot locate symbol "atof" referenced by "xxx.so"
- failed: dlopen failed: cannot locate symbol "rand" referenced by
- UnsatisfiedLinkError: dlopen failed: cannot locate symbol “strtof” referenced by “libsupportjni.so”
- [cocos2dx]这么了三天三夜的常见的ndk编译报错 dlopen failed: cannot locate symbol "atof" referenced by
- 解决java.lang.UnsatisfiedLinkError:dlopen failed:cannot locate symbol "tcgetattr" referenced by..
- java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__exidx_end" referenced by
- java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memclr8" referenced by
- java.lang.UnsatisfiedLinkError:dlopen failed:cannot locate symbol "tcgetattr" referenced by..
- java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "strtof" referenced by "libsupp
- java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "strtof" referenced by "libsuppo
- java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "strtof" referenced by "libsupp
- 关于eclipse的ndk开发failed: dlopen failed: cannot locate symbol "signal" referenced
- Android错误:cannot locate symbol "rand" referenced by "libgameshared.so
- NDK 编译报错:cannot locate symbol referenced by
- NDK编译库运行时报dlopen failed: cannot locate symbol "__exidx_end" 解决办法
- Android ndk cannot locate symbol "atof" referenced by的解决方法
- NDK java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_Z12getIPAddressPcS_" refer
- Cordova 3.x 基础(12) -- Plugin开发
- 冒泡排序
- PhpMyAdmin隐藏数据库设置同前缀失效的问题
- IOS开发中 常用的宏定义[陆续更新]
- day02
- ndk编译 错误:dlopen failed:cannot locate symbol "一个符号" referenced by "你的库.so/.a" lang.UnsatisfiedLinkErr
- android中Shape使用总结
- IOS开发教程--如何使用点9图片
- html及css学习笔记_13_css三种选择器(selector)
- C语言中从大到小的顺序排列《学习记录》
- NYOJ 289 苹果
- day03
- 155.Min Stack(求一个栈中的最小元素)
- ArrayAdapter创建ListView学习笔记