(推测)在Android Studio中出现错误,但编译器和应用程序运行正常。

问题描述 投票:0回答:1

我已经尝试了大多数关于误报的类似问题所说的方法:删除.idea文件夹(甚至是~.gradle),退出项目,重新加载,使缓存无效&重新启动,等等。 我还运行了刷新c++链接库,以备不时之需。

现在只是一个背景:我的整个项目在IDE的lint检查器上是正常的。 所有文件都显示了适当的警告等。 除了我c++方面的这一行。 (我将显示整个方法的上下文)。 我可以很好地构建和运行我的项目,当我甚至调用应用程序的这个逻辑部分时,它的行为与预期一样,没有任何问题。

// Header (relevant member variable)
class MyClass {
private:
    std::vector<std::vector<int>> mArrayOfFooBars
}

// MyClass.cpp
void MyClass::updateModel(int index, const std::vector<int>& fooBars) {
    this->mArrayOfFooBars[index].assign(fooBars.begin(), fooBars.end());
    doMoreCalculations();
}

在Android Studio中 foobars.begin()fooBars.end() 导致以下错误。

参数类型不匹配。"const int "和 "std::vector>:const_iterator "类型不兼容。

参数类型不匹配。"unsigned int "和 "const int "以及 "std::vector>:const_iterator "类型不兼容。

这让我想到可能是linter出了问题,也可能是我的编译器设置有问题,其实这应该是编译器的错误。 不管是哪种方式,我都会试着提供尽可能多的设置,因为我觉得是相关的,希望有人能提供一些有用的建议。

  • Gradle Plugin Ver: 3.6.3 (最近)
  • Gradle版本: 5.6.4
  • SDK版本: 29
  • Build Tools Ver: 29.0.3
  • NDK (Side by side) - 未安装 (不确定这是什么)
  • CMake: 安装了3.10.2 & 3.6.4111459 (可能只需要其中一个?)
  • SDK平台-工具 (30.0.0的更新)
  • SDK工具:26.1.1

我检查了我的linter设置(检查),没有发现任何错误级别的检查。

enter image description here

我只能想到这些了,我会继续正常开发,但它的存在让我很困扰。 所以,如果能帮助我消除这个流氓错误,我将感激不尽!

c++ android-studio cmake android-ndk
1个回答
0
投票

IDE中的错误没有显示为构建的一部分,这在Android Studio中并不罕见。构建和IDE使用的工具链不一样。旧版本的Studio使用CLion的C++解析器,这经常是错误的,因为解析C++是出了名的困难。新版本开始使用clangd,但它不一定和构建使用的Clang是同一个版本。

当你看到这样的问题时,有可能在AS的新版本中会更好,但通常值得提交一个bug,以确保它在某人的雷达上。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.