配置
操作系統: Ubuntu 16.04
Android Studio 版本: 2.2.3
密鑰代碼
~/project/build.gradle:buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
. . .
~/project/library/build.gradle:apply plugin: 'com.android.library'
android {
. . .
defaultConfig {
. . .
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=clang',
'-DANDROID_STL=gnustl_static'
//I also tried '-DANDROID_STL=gnustl_shared', result is same
}
}
}
externalNativeBuild {
cmake {
path"src/main/cpp/CMakeLists.txt"
}
}
. . .
}
~/project/app/build.gradle:apply plugin: 'com.android.application'
android {
. . .
}
dependencies {
. . .
compile project(':library')
. . .
}
~/project/settings.gradleinclude ':app', ':library'
~/project/library/src/main/cpp/test.h :#include //vector is red, says"cannot find vector"
#include
class test {
private:
std::vector array;//std is red, says"can't resolve container std"
};
問題的描述
在文件中 ~/project/library/src/main/cpp/test.h#include 中的vector 為紅色。 將滑鼠移動到它將彈出的窗口,該窗口顯示 Cannot find'vector' 。 std::vector 中的std 也是紅色。 把滑鼠移到上面 Can't resolve container 'std'
這裡項目沒有編譯錯誤。 它可以成功編譯並安裝在我的手機上。 問題是它有語法錯誤。 我在某些變數上沒有完成代碼,如 test.h 中的array 。
我發現一些信息
我導入了項目茶壺包含 #include 。 Android Studio 為這個項目解析了 vector 和 std 符號。
我的問題
我做了什麼為什麼項目茶壺沒有這個問題? 我的項目和 teapots 之間的關鍵區別是,使後者能夠解決 vector 和 std,但我不能?
更新
我在 Android Studio 中創建了一個新項目。 在新建項目嚮導的步驟 1中,我檢查了 include C++ Support 。 在最後一步中,我為 C++ Standard 選項保留了默認的Toolchain Default 。 單擊 finish 按鈕后,Android Studio 自動為我創建了文件 native-lib.cpp 。 我在這個文件的第 3行添加了代碼 #include 。 這一次 Android Studio 正確解析了符號 vector 。 然後我為這個項目創建了一個新的MODULE 庫 mylibrary,在那裡我添加了 cpp 文件夾和 test.h,它還解析了符號 vector ( MODULE build.gradle的mylibrary 已經被正確地添加到了) 。 但是我的問題是我需要向現有項目添加 vector,而我現有的項目無法解析符號 vector 。