【发布时间】:2018-05-02 09:12:36
【问题描述】:
我正在尝试使用
std::function
但是编译器会报错
Error:(50, 10) error: no type named 'function' in namespace 'std'
我已尝试修改 build.gradle 文件
externalNativeBuild {
ndkBuild {
path "src/main/jni/Android.mk"
}
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_STL=gnustl_static"
path 'src/main/jni/CMakeLists.txt'
}
}
但它不接受path以外的参数并抛出以下错误
Error:(28, 0) Could not find method arguments() for arguments [-DANDROID_STL=gnustl_static] on object of type com.android.build.gradle.internal.dsl.CmakeOptions.
请帮助我能够使用
std::function
更新
感谢 @Alex Cohn 我能够配置标志和参数,现在我的文件看起来像这样
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion '26.0.2'
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_STL=gnustl_static"
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
/* ndkBuild {
path "src/main/jni/Android.mk"
}*/
cmake {
// cppFlags "-std=c++11"
//arguments "-DANDROID_STL=gnustl_static"
path 'src/main/jni/CMakeLists.txt'
}
}
}
dependencies {
compile 'com.android.support:support-annotations:25.0.1'
}
【问题讨论】:
-
你的 cpp 源中有
#include <functional>吗? -
您可以进一步将
-DCMAKE_CXX_STANDARD=11添加到您的参数设置中。 -
@vre,是的,我试过了,添加参数不起作用,它根本不接受任何参数,我可以在 CMAke 文件本身中设置这个参数吗?
-
顺便说一句。在参数行的末尾有一个多余的逗号。我想这会阻止其他选项被识别。逗号仅用于分隔不同的参数。
-
@vre,你说得对,但这只是一个错字,我在插入代码时不小心输入了它
标签: android c++ cmake android-ndk ndk-build