C++ NDK在';之前应为不合格id^';代币
我对NDK和JAVA都是新手,所以请耐心听我说。 我有C++文件,我想通过NDK构建。我的build.gradle文件中有以下内容:C++ NDK在';之前应为不合格id^';代币,c++,android-ndk,block,C++,Android Ndk,Block,我对NDK和JAVA都是新手,所以请耐心听我说。 我有C++文件,我想通过NDK构建。我的build.gradle文件中有以下内容: defaultConfig { applicationId "com.example.blabla.blabla" minSdkVersion 21 targetSdkVersion 22 versionCode 1 versionName "1.0" ndk {
defaultConfig {
applicationId "com.example.blabla.blabla"
minSdkVersion 21
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk {
moduleName "test"
cFlags "-std=c++11 -fexceptions"
stl "gnustl_shared"
}
}
我在local.properties中有一行:
ndk.dir= pathToMyNDK/AndroidStudio/ndk
在一个C++文件中,我有这样的块定义:
typedef void (^ABCD)(string, string);
以及一个接受该类型参数的函数:
void generateAlphabetLetters(ABCD alph){}
当我尝试使用NDK构建文件时,我遇到了以下无法解决的错误:
在“^”标记之前应为非限定id编译器告诉您,这是一个语法错误
typedef void (^ABCD)(string, string);
不是有效的C++。
标准C++中有lambda。 块是苹果的C扩展。如果您想在Android中使用它们,您应该重写代码以使用C++11 lambdas(由NDK的gcc和clang支持)或使用Objective-C和Objective-C++支持的地方(包括Objective-C块)。
您从哪里获得此源文件的?如错误所述,^
字符在该位置无效。我想我已经看到它在“C++ + CLI”中使用,它与托管代码有关,但不是在适当的标准C++中。@ ZZEZELZZ我写了代码,我需要在快速的谷歌搜索中使用我的应用程序中的块,它看起来是一个特定的苹果扩展,而不是标准C++的一部分。你能详细说明一下你需要它做什么吗?@zenzelezz使用block不是强制性的,但这会使我的代码整洁。我有多个C++文件中的块,你说你有其他C++文件中的块,那些也在Android NDK项目中吗?