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

Qt Creator中C++项目rotation90函数未定义引用编译错误

解决undefined reference to rotation90链接错误的思路
  • 核对函数签名完全匹配
    重点盯紧const修饰符:声明里的const std::vector<std::vector<int>>&参数,在primitives.cpp的实现里有没有漏掉const?比如声明是vector<vector<int>> rotation90(const vector<vector<int>>& mat);,实现写成vector<vector<int>> rotation90(vector<vector<int>>& mat)就会导致签名不匹配,链接器认不出。同时还要确认参数、返回值的容器类型完全一致,别因为typedef/别名搞出隐性差异。

  • 确认CMakeLists.txt包含了primitives.cpp
    检查add_executable指令里有没有把primitives.cpp加进去,正确写法应该是:

    add_executable(你的项目名 main.cpp primitives.cpp)
    

    要是漏了这个cpp文件,编译阶段只会生成main.o,链接时自然找不到函数实现。别依赖aux_source_directory自动扫描,手动列全源文件更靠谱。

  • 排查命名空间问题
    如果rotation90在某个命名空间里,比如头文件里写了namespace MyUtils { ... },那cpp实现时必须也包裹在同一个命名空间里,main调用时也要加上命名空间前缀(比如MyUtils::rotation90)。别搞成声明在命名空间、实现却在全局空间的情况,这会生成两个完全不同的函数。

  • 清理Qt Creator构建缓存
    有时候缓存会搞鬼,旧的目标文件没更新。直接点工具栏的「Clean」再重新「Build」,或者手动删掉build目录后重新构建,能解决不少奇怪的链接问题。

  • 检查inline声明问题
    要是头文件里把rotation90声明成了inline,那实现必须放在头文件里,不然链接器找不到inline函数的定义。如果不想放头文件,就去掉inline关键字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:37:49