作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的设备无法加载 native 库;错误信息是
java.lang.UnsatisfiedLinkError: dlopen failed: unknown reloc type 160 @ 0xa849dc64 (6010)
160
是
R_SH_GOT32
并且不应该被 Android 加载程序所期望。
#include <atomic>
#define N 3
struct S {
int a[N];
};
void qq() {
std::atomic<S> s;
s.exchange(S());
}
#define N 2
就够了使库正确加载。
r10e
,在 ARM 32 上进行测试,模拟器设置为 API 4.4.4 (API 19)。我尝试了不同的工具链:4.8、4.9 和 clang。我也尝试过 gnuSTL_static 和 shared,以及 libc++。
NDK_ROOT/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:233: error: undefined reference to '__atomic_exchange'
最佳答案
对于 android 上的原子支持:
https://developer.android.com/ndk/guides/cpp-support.html
Google 在 NDK 12 (GCC) 中修复了原子库
原子支持:
如果包含 ,则很可能还需要 libatomic。如果您使用的是 ndk-build,请添加以下行:
LOCAL_LDLIBS += -latomic
如果您使用自己的工具链,请使用:
-latomic
试试这个,它应该可以解决链接问题。
关于c++11 - R_SH_GOT32 被 Android 加载程序意外用于原子交换(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32469210/
我是一名优秀的程序员,十分优秀!