ndk开发中导入c++文件,原文件中使用了thread类,但是as不识别

app开发中需要导入一个c++编写的核心算法,用到了ndk,编译过程中发现,c++里面调用了thread这个类,
#include写了,但是却不识别thread这个类,求救!!!
用的是R14ndk,也集成了opencv3.4.2 因为opencv这个版本,所以ndk只能用14,不然无法编译。
图片说明
求各位大神指点
非常感谢

3个回答

你还需要开启 stl的支持,这是模板库的支持

suhang0922
Hangs22 回复codecraft: 原因找到了,因为ndk版本问题,我用的14,以前的项目用的15。15就没有问题,两个版本的mutex文件内容也有区别,我找一下可以同时兼容opencv3.4和mutex类的方法
一年多之前 回复
codecraft
沂酩 回复suhang0922: 上面的-DANDROID_STL=c++_static就是
一年多之前 回复
suhang0922
Hangs22 回复codecraft: 谢谢 我再研究研究
一年多之前 回复
codecraft
沂酩 回复suhang0922: arguments "-DCMAKE_FIND_ROOT_PATH=", "-DANDROID_STL=c++_static", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_ARM_NEON=TRUE", \ "-DUSE_CHIPMUNK=TRUE", "-DUSE_BULLET=TRUE" cppFlags "-frtti -fexceptions"
一年多之前 回复
suhang0922
Hangs22 非常感谢,不过我c++几乎一点不懂,因为项目要求才来研究ndk没多长时间。所以麻烦再请问一下,如何开启stl支持?
一年多之前 回复
  1. Android.mk 中增加c++的标准了吗
  2. Application.mk 增加 stl了吗
codecraft
沂酩 回复suhang0922: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
一年多之前 回复
suhang0922
Hangs22 谢谢帮助,不过我用的是CMakeLists.txt,这个应该如何添加stl?
一年多之前 回复

原因是因为没有指定c++编译版本,然后在app\build.gradle文件中图片说明
如截图中添加了-std=c++11,就可以了
然后又出现了一个 timed_mutex 类 无法被识别。 继续寻找解决办法,应该是跟thread类 是相同问题

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问