我正在使用Android Studio。我在jni
文件夹中添加了所有头文件,并在jniLibs
文件夹中添加了库,并在build.gradle
文件中添加了路径。
sourceSets.main {
jni.srcDir 'src/main/jni'
jniLibs.srcDir 'src/main/jniLibs'
}
但我得到了undefined reference error
。我在网上搜索,大多数解决方案是阻止自动ndk-build
调用并编辑Android.mk
文件,然后从终端运行ndk-build
调用。我想链接build.gradle
文件中的外部库。
其次我收到undefined reference to 'std::ios_base::Init::Init()'
错误。我链接了库
ldLibs "stdc++"
但我仍然收到错误。我正在使用交叉编译的库和头文件,我想我需要链接交叉编译器提供的库。所以我喜欢这个
ldLibs "/home/xx/xx/xx/xx/arm-linux-androideabi/lib/stdc++"
但仍然收到错误。关于它的任何解决方案?
答案 0 :(得分:0)
要在build.gradle
中声明STL,请使用:
stl "gnustl_static"
ldLibs
保留给其他lib。
摘自build.gradle
:
defaultConfig {
ndk {
moduleName "MyModule"
cFlags "-std=c++11 -frtti -fexceptions"
ldLibs "atomic -llog"
stl "gnustl_static"
}
}