You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中C++ std::list begin()/end()不匹配,疑为CMake问题

解决Android Studio中C++链接错误与std::list迭代器编辑器提示问题

看起来你一开始被编辑器的红色波浪线误导了,实际编译失败的根源是链接错误,而非std::list迭代器本身的问题。我们来一步步拆解解决:

问题根源分析

从错误日志可以看到,所有报错都是undefined reference(未定义引用):

  • layout::get(int, int)
  • layout::~layout()

这说明你的cellStats-class共享库在链接时,找不到layout类的具体实现——虽然你把layout编译成了单独的layout-class共享库,但没有将这个库链接到依赖它的cellStats-class上。另外,把每个类都做成单独的共享库不仅没必要,还会增加链接复杂度,这也是你遇到问题的核心原因。

解决方案:修正CMakeLists.txt

推荐两种方案,选一种适合你的:

方案1:合并所有源码到一个共享库(最简单)

把所有相关的C++文件都打包到主共享库native-lib中,避免多库依赖的麻烦:

cmake_minimum_required(VERSION 3.4.1)
set (CMAKE_CXX_STANDARD 11)

# 头文件目录
include_directories(${MY_SOURCE_DIR}/src/main/cpp)

# 将所有cpp文件添加到native-lib共享库
add_library(native-lib SHARED 
    src/main/cpp/native-lib.cpp
    src/main/cpp/cellStats.cpp
    src/main/cpp/board.cpp
    src/main/cpp/cell.cpp
    src/main/cpp/layout.cpp
)

# 找到系统log库
find_library(log-lib log)

# 链接log库到主库
target_link_libraries(native-lib ${log-lib})

方案2:使用静态库管理依赖(适合模块化场景)

如果想保留类的模块化,可以把各个类做成静态库,再统一链接到主共享库:

cmake_minimum_required(VERSION 3.4.1)
set (CMAKE_CXX_STANDARD 11)

include_directories(${MY_SOURCE_DIR}/src/main/cpp)

# 把各个类编译为静态库(STATIC)
add_library(layout-class STATIC src/main/cpp/layout.cpp)
add_library(cell-class STATIC src/main/cpp/cell.cpp)
add_library(board-class STATIC src/main/cpp/board.cpp)
add_library(cellStats-class STATIC src/main/cpp/cellStats.cpp)

# 主共享库
add_library(native-lib SHARED src/main/cpp/native-lib.cpp)

find_library(log-lib log)

# 处理依赖:cellStats依赖layout,先链接这两个
target_link_libraries(cellStats-class layout-class)
# 把所有静态库和log库链接到主共享库
target_link_libraries(native-lib cellStats-class board-class cell-class ${log-lib})

解决编辑器红色波浪线问题

编辑器里的std::list迭代器波浪线是Android Studio的代码索引错误,当你修正CMake并同步项目后就会消失:

  1. 保存修改后的CMakeLists.txt
  2. 点击顶部菜单栏的File -> Sync Project with Gradle Files
  3. 等待索引更新完成,波浪线会自动消失

内容的提问来源于stack exchange,提问作者DDriggs00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:11:44