NDK 无法识别某些头文件,例如 <mutex> 和 <future>

NDK not identifying certain header files like <mutex> and <future>

我正在尝试将 C++ 文件集成到我的 android 项目中。 我尝试使用 Android Studio 的 ndk 功能,但我遇到了几个问题。因此,我通过在我的 .gradle 文件中进行以下更改来阻止 Android Studio 创建自己的 Android.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.properties 文件中定义

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.mk 文件放在 src/main/java/jni 文件夹中。

我收到以下错误 -

mutex: No such file or directory
future: No such file or directory

请帮忙!

我在将我的 c++11 代码移植到 ndk 上时遇到了类似的问题。

NDK (10e) 一直抱怨缺少 gnustl_xxxstlport_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

希望有人能得到一些帮助。