NDK 无法识别某些头文件,例如 <mutex> 和<future>
NDK not identifying certain header files like <mutex> and <future>
我正试图将c++文件集成到我的android项目中。我尝试使用Android Studio的ndk功能,但我有几个问题。所以我阻止了Android Studio创建自己的Android。通过在我的.gradle文件中进行以下更改来修改Mk文件-
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir 'src/main/libs'
}
我创建了一个gradle任务来编译我的库文件。
task ndkBuild(type: Exec) {
commandLine ndk_build_path, '-C', file('src/main/jni').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
其中ndk_build_path是在gradle中定义的。属性文件
ndk_build_path=/Users/shadabunique/Library/Android/sdk/ndk-bundle/ndk-build
我使用的平台是Mac。
c++文件中的头文件是-
#include <stdio.h>
#include <iostream>
#include <unistd.h>
#include <vector>
#include <ctime>
#include <sys/time.h>
#include <cmath>
#include <queue>
#include <mutex>
#include <future>
我还创建了Application。带有内容的Mk文件-
APP_ABI := all
APP_STL := gnustl_static
APP_STL :=stlport_static
我把所有的c++文件,Android。mk和Application。src/main/java/jni目录下的Mk文件
我得到以下错误-
mutex: No such file or directory
future: No such file or directory
我在将c++11代码移植到ndk上时遇到了类似的问题。
NDK (10e)一直抱怨gnustl_xxx
或stlport_xxx
缺少东西,但我发现c++_static
很顺利。
你可以试着把这个添加到application。mk
APP_STL:=c++_static
和Android.mk
LOCAL_CPPFLAGS += -std=c++11
我通过做以下更改来解决这个问题-
Android。Mk -
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myLib
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libmyLib.so
LOCAL_LDLIBS += -llog
include $(PREBUILT_SHARED_LIBRARY)
Application.mk
APP_ABI := all
APP_STL :=c++_static
希望有人能得到一些帮助。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中