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_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
希望有人能得到一些帮助。
我正在尝试将 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_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
希望有人能得到一些帮助。