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

如何解决Objective-C中全局变量赋值时的‘undefined symbol’错误?

解决链接错误:undefined symbol: _ue

问题原因

你在global.h里用extern int ue;只是声明了变量,没有给它分配实际内存(也就是没定义)。extern关键字的作用是告诉编译器“这个变量在其他文件里已经定义过了”,但当你给ue赋值时,链接器需要找到变量的实体,找不到就会抛出这个错误。之前没赋值时,编译器可能只是引用声明,没触发链接器的实体查找,所以没报错。

解决方案

  1. 保持global.h里的声明不变:
    extern int ue;
    
  2. 在项目中任意一个.m或.cpp文件(比如global.m、AppDelegate.m这类只会被编译一次的文件)里添加变量的定义:
    int ue; // 可以加初始值,比如int ue = 0;
    

注意事项

  • 不要在头文件里直接写int ue;(不加extern),否则每个引入该头文件的文件都会生成一个ue的副本,链接时会报重复定义错误。
  • 确认定义变量的文件已经被加入到项目的编译列表中(Xcode中检查Targets -> Build Phases -> Compile Sources里是否包含该文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:47:04