xcode升级6.0.1之后Undefined symbols for architecture arm64解决方案

本文介绍了一种解决iOS环境下使用cocos2d-x 3.2版本编译Helloworld项目时出现的链接错误的方法。通过将特定的_arm64.a文件加入到Xcode项目的Frameworks中,可以成功解决编译问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处http://blog.youkuaiyun.com/wjlpld/article/details/40400041  谢谢大家

最近收入iPhone6之后将Xcode顺便升级到6.1版本,编译cocos2d-x 3.2的Helloworld项目时报错如下


  1. Undefined symbols for architecture arm64:  
  2.   "_WebPGetFeaturesInternal", referenced from:  
  3.       WebPGetFeatures(unsigned char const*, unsigned long, WebPBitstreamFeatures*) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  4.   "_WebPInitDecoderConfigInternal", referenced from:  
  5.       WebPInitDecoderConfig(WebPDecoderConfig*) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  6.   "_png_get_io_ptr", referenced from:  
  7.       cocos2d::(anonymous namespace)::pngReadCallback(png_struct_def*, unsigned char*, unsigned long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  8.   "_png_error", referenced from:  
  9.       cocos2d::(anonymous namespace)::pngReadCallback(png_struct_def*, unsigned char*, unsigned long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  10.   "_WebPDecode", referenced from:  
  11.       cocos2d::Image::initWithWebpData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  12.   "_TIFFGetField", referenced from:  
  13.       cocos2d::Image::initWithTiffData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  14.   "__TIFFmalloc", referenced from:  
  15.       cocos2d::Image::initWithTiffData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  16.   "_TIFFReadRGBAImageOriented", referenced from:  
  17.       cocos2d::Image::initWithTiffData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  18.   "_TIFFClose", referenced from:  
  19.       cocos2d::Image::initWithTiffData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  20.   "_jpeg_read_header", referenced from:  
  21.       cocos2d::Image::initWithJpgData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  22.   "_png_read_end", referenced from:  
  23.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  24.   "_jpeg_read_scanlines", referenced from:  
  25.       cocos2d::Image::initWithJpgData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  26.   "_png_get_valid", referenced from:  
  27.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  28.   "_png_set_strip_16", referenced from:  
  29.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  30.   "_png_create_read_struct", referenced from:  
  31.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  32.   "_png_get_image_height", referenced from:  
  33.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  34.   "_png_set_packing", referenced from:  
  35.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  36.   "_TIFFClientOpen", referenced from:  
  37.       cocos2d::Image::initWithTiffData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  38.   "_FT_Get_Glyph", referenced from:  
  39.       cocos2d::FontFreeType::getGlyphBitmapWithOutline(unsigned short, FT_BBox_&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  40.   "_FT_Set_Char_Size", referenced from:  
  41.       cocos2d::FontFreeType::createFontObject(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) in libcocos2dx iOS.a(CCFontFreeType.o)  
  42.   "_png_read_image", referenced from:  
  43.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  44.   "_png_destroy_read_struct", referenced from:  
  45.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  46.   "_FT_Glyph_StrokeBorder", referenced from:  
  47.       cocos2d::FontFreeType::getGlyphBitmapWithOutline(unsigned short, FT_BBox_&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  48.   "_png_sig_cmp", referenced from:  
  49.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  50.   "_png_read_update_info", referenced from:  
  51.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  52.   "_png_get_rowbytes", referenced from:  
  53.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  54.   "_jpeg_destroy_decompress", referenced from:  
  55.       cocos2d::Image::initWithJpgData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  56.   "_FT_Glyph_Get_CBox", referenced from:  
  57.       cocos2d::FontFreeType::getGlyphBitmapWithOutline(unsigned short, FT_BBox_&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  58.   "_png_get_color_type", referenced from:  
  59.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  60.   "_jpeg_std_error", referenced from:  
  61.       cocos2d::Image::initWithJpgData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  62.   "_png_set_tRNS_to_alpha", referenced from:  
  63.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  64.   "_FT_Done_FreeType", referenced from:  
  65.       cocos2d::FontFreeType::shutdownFreeType() in libcocos2dx iOS.a(CCFontFreeType.o)  
  66.   "_FT_Done_Glyph", referenced from:  
  67.       cocos2d::FontFreeType::getGlyphBitmapWithOutline(unsigned short, FT_BBox_&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  68.   "_jpeg_start_decompress", referenced from:  
  69.       cocos2d::Image::initWithJpgData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  70.   "_FT_Load_Glyph", referenced from:  
  71.       cocos2d::FontFreeType::getGlyphBitmap(unsigned short, int&, int&, cocos2d::Rect&, int&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  72.       cocos2d::FontFreeType::getGlyphBitmapWithOutline(unsigned short, FT_BBox_&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  73.   "_jpeg_CreateDecompress", referenced from:  
  74.       cocos2d::Image::initWithJpgData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  75.   "_jpeg_mem_src", referenced from:  
  76.       cocos2d::Image::initWithJpgData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  77.   "_FT_Init_FreeType", referenced from:  
  78.       cocos2d::FontFreeType::initFreeType() in libcocos2dx iOS.a(CCFontFreeType.o)  
  79.   "_png_set_read_fn", referenced from:  
  80.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  81.   "_png_get_bit_depth", referenced from:  
  82.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  83.   "_FT_Stroker_Done", referenced from:  
  84.       cocos2d::FontFreeType::~FontFreeType() in libcocos2dx iOS.a(CCFontFreeType.o)  
  85.   "_png_set_palette_to_rgb", referenced from:  
  86.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  87.   "_FT_Get_Char_Index", referenced from:  
  88.       cocos2d::FontFreeType::getHorizontalKerningForChars(unsigned short, unsigned short) const in libcocos2dx iOS.a(CCFontFreeType.o)  
  89.       cocos2d::FontFreeType::getGlyphBitmap(unsigned short, int&, int&, cocos2d::Rect&, int&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  90.       cocos2d::FontFreeType::getGlyphBitmapWithOutline(unsigned short, FT_BBox_&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  91.   "_png_get_image_width", referenced from:  
  92.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  93.   "_png_set_longjmp_fn", referenced from:  
  94.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  95.   "_FT_Stroker_Set", referenced from:  
  96.       cocos2d::FontFreeType::FontFreeType(bool, int) in libcocos2dx iOS.a(CCFontFreeType.o)  
  97.   "_FT_Select_Charmap", referenced from:  
  98.       cocos2d::FontFreeType::createFontObject(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) in libcocos2dx iOS.a(CCFontFreeType.o)  
  99.   "_FT_Outline_Render", referenced from:  
  100.       cocos2d::FontFreeType::getGlyphBitmapWithOutline(unsigned short, FT_BBox_&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  101.   "__TIFFfree", referenced from:  
  102.       cocos2d::Image::initWithTiffData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  103.   "_png_set_expand_gray_1_2_4_to_8", referenced from:  
  104.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  105.   "_FT_Done_Face", referenced from:  
  106.       cocos2d::FontFreeType::~FontFreeType() in libcocos2dx iOS.a(CCFontFreeType.o)  
  107.   "_png_create_info_struct", referenced from:  
  108.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  109.   "_png_read_info", referenced from:  
  110.       cocos2d::Image::initWithPngData(unsigned char const*, long) in libcocos2dx iOS.a(CCImage-5287FE6734B2FA44.o)  
  111.   "_FT_Stroker_New", referenced from:  
  112.       cocos2d::FontFreeType::FontFreeType(bool, int) in libcocos2dx iOS.a(CCFontFreeType.o)  
  113.   "_FT_New_Memory_Face", referenced from:  
  114.       cocos2d::FontFreeType::createFontObject(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) in libcocos2dx iOS.a(CCFontFreeType.o)  
  115.   "_FT_Outline_Translate", referenced from:  
  116.       cocos2d::FontFreeType::getGlyphBitmapWithOutline(unsigned short, FT_BBox_&) in libcocos2dx iOS.a(CCFontFreeType.o)  
  117.   "_FT_Get_Kerning", referenced from:  
  118.       cocos2d::FontFreeType::getHorizontalKerningForChars(unsigned short, unsigned short) const in libcocos2dx iOS.a(CCFontFreeType.o)  
  119. ld: symbol(s) not found for architecture arm64  
  120. clang: error: linker command failed with exit code 1 (use -v to see invocation)  

暂时的解决方法如下:

打开你项目所在目录,找到里面的cocos2d-》external,在external文件夹里面搜索_arm64.a(是external里面所有的_arm64.a,不是整个计算机的!),将你搜索到的后缀为_arm64.a的文件(cocos2d-x 3.2里面是7个),之后把这些所有的文件拖到到你的Xcode项目目录里面的FrameWorks去,选择group方式,在现阶段下只能用这个方法了,大家尽情的编译吧~~~



<think>好的,我现在需要解决用户遇到的编译错误:“Undefined symbols for architecture arm64: QG_AutoEQ_Lib”,出现在main.cpp.o文件中。首先,我应该理解这个错误的含义。根据用户提供的引用资料,这个错误通常是因为链接器在构建过程中找不到某个符号的定义,这里具体是QG_AutoEQ_Lib这个符号。 首先,根据引用[1]和[3],这个错误通常与架构不兼容或缺少必要的库文件有关。用户使用的是arm64架构,所以需要确保所有的依赖库和代码都支持该架构。可能的问题点包括: 1. **QG_AutoEQ_Lib的实现文件未参与编译**:检查是否将包含QG_AutoEQ_Lib定义的源文件(如.cpp文件)添加到项目中,或者在编译命令中是否正确包含。如果只有头文件声明而没有对应的源文件编译,链接时就会找不到实现。 2. **依赖库未正确链接**:如果QG_AutoEQ_Lib来自外部库,可能需要确认库文件(.a或.dylib)是否被正确链接,路径是否正确,以及库是否支持arm64架构。使用`lipo -info`命令检查库的架构支持情况,确保包含arm64。 3. **头文件与实现文件不一致**:可能存在函数声明与定义不一致的情况,比如函数名、参数列表或命名空间不匹配,导致链接器找不到正确的符号。需要检查头文件中的声明和实现文件中的定义是否完全一致。 4. **编译器设置问题**:项目的构建设置可能有问题,比如C++标准版本不一致,或者编译选项导致符号名称修饰(name mangling)错误。需要确认所有文件的编译选项一致,特别是C++版本和优化设置。 接下来,按照用户提供的引用[2],有时候将头文件包含改为源文件可以临时解决问题,但这不规范。用户可能没有正确地将实现文件加入项目,或者在Makefile/CMakeLists.txt中没有包含相关源文件。因此,解决方案的第一步应该是确保QG_AutoEQ_Lib的实现文件被正确编译和链接。 另外,引用[3]提到缺少必要的库文件,例如libz.tbd,需要检查是否所有依赖库都已正确添加到项目中,并确保这些库支持arm64架构。如果QG_AutoEQ_Lib依赖其他第三方库,这些库的缺失也可能导致符号未定义。 可能的解决步骤包括: - 检查QG_AutoEQ_Lib的源文件是否被编译,并确认其生成的目标文件是否正确。 - 使用命令行工具如`nm`来查看目标文件或库中是否存在QG_AutoEQ_Lib符号,确认其可见性。 - 确保在编译命令中正确链接所有需要的库,包括路径和库名称。 - 如果是Xcode项目,检查Build Phases中的Compile Sources和Link Binary With Libraries是否正确配置。 - 如果是CMake项目,检查CMakeLists.txt是否包含所有必要的源文件和链接指令。 最后,如果QG_AutoEQ_Lib是第三方库,可能需要更新或重新安装该库,确保其支持当前的系统架构。如果问题仍然存在,可能需要联系库的提供者获取支持,或者检查文档是否有特殊的使用要求。</think>### 编译错误“Undefined symbols for architecture arm64: QG_AutoEQ_Lib”解决方案 #### 1. 确认符号定义文件是否参与编译 - **问题**:`QG_AutoEQ_Lib`的实现(如`.cpp`或`.m/.mm`文件)未被编译到项目中,导致链接时找不到定义。 - **解决**: - 检查项目是否包含实现`QG_AutoEQ_Lib`的源文件(如`QG_AutoEQ_Lib.cpp`)。 - 在编译命令或构建系统(如Xcode、CMake)中确认该文件被添加到编译列表。例如: ```cmake # CMakeLists.txt示例 add_executable(your_target main.cpp QG_AutoEQ_Lib.cpp) ``` - 在Xcode中,进入项目设置 → Build Phases → Compile Sources,确认相关文件已勾选[^3]。 #### 2. 检查依赖库的完整性和架构支持 - **问题**:`QG_AutoEQ_Lib`依赖的静态库(`.a`)或动态库(`.dylib`)未正确链接,或库本身不支持`arm64`架构。 - **解决**: - 使用终端命令检查库支持的架构: ```bash lipo -info path/to/libQG_AutoEQ_Lib.a ``` 输出需包含`arm64`,例如:`Architectures in the fat file: ... arm64`。 - 如果库不支持`arm64`,需重新编译生成支持该架构的版本,或联系提供者获取兼容版本。 - 在Xcode中,检查项目设置 → Build Phases → Link Binary With Libraries,确认库已正确添加[^3]。 #### 3. 验证头文件与实现的一致性 - **问题**:头文件(`.h`)中声明了`QG_AutoEQ_Lib`,但实现文件中的函数签名(如参数、返回值、命名空间)不一致。 - **解决**: - 对比头文件和源文件中的函数定义,确保完全一致。例如: ```cpp // 头文件声明 void QG_AutoEQ_Lib(int param); // 源文件实现 void QG_AutoEQ_Lib(int param) { ... } // 正确 void QG_AutoEQ_Lib(float param) { ... } // 错误:参数类型不匹配 ``` - 检查是否遗漏`extern "C"`(若涉及C/C++混合编译)[^2]。 #### 4. 检查编译器和链接器设置 - **问题**:编译器选项(如C++标准版本)或链接器标志不匹配,导致符号修饰(Name Mangling)错误。 - **解决**: - 确保所有文件的编译选项一致(如`-std=c++17`)。 - 对于C++函数,使用`extern "C"`避免名称修饰: ```cpp extern "C" { void QG_AutoEQ_Lib(int param); } ``` - 清理项目并重新构建,避免缓存问题: ```bash xcodebuild clean ``` #### 5. 其他可能性排查 - **第三方库依赖缺失**:若`QG_AutoEQ_Lib`依赖其他库(如`libz.tbd`),需在项目中显式添加。 - 在Xcode中,通过项目设置 → General → Frameworks and Libraries添加缺失的库。 - **代码文件后缀问题**:将C++代码文件后缀从`.h`改为`.cpp`(不推荐长期使用,临时验证用)。 --- ### 验证步骤 1. **查看符号表**:使用`nm`命令检查目标文件或库是否包含`QG_AutoEQ_Lib`: ```bash nm -gU path/to/main.o | grep QG_AutoEQ_Lib ``` 若输出包含`T`(全局符号),则符号存在;若未找到,说明实现未编译。 2. **最小化测试**:创建一个仅包含`QG_AutoEQ_Lib`调用的最小程序,验证是否能编译通过。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值