cocos2dx3.x项目升级到xcode15以上的iconv与duplicate symbols报错问题
cocos2dx3.x项目升级xcode15以上后会有几处报错。
1. CCFontAtlas.cpp文件下的iconv与iconv_close的报错。修改如下:
// iconv_close(_iconv);iconv_close((iconv_t)_iconv);iconv((iconv_t)_iconv, (char**)&pin, &inLen, &pout, &outLen);
// iconv(_iconv, (char**)&pin, &inLen, &pout, &outLen);
2. Duplicate symbols报错。这是因为Xcode 15以上采用了新的链接器,即ld_prime。虽然新链接器带来了许多性能改进,但在某些情况下,它可能不兼容旧的库或代码结构,导致Duplicate symbols错误。为了解决旧项目兼容性问题我们需要告诉Xcode在编译时使用旧的链接器(ld64),而不是新的ld_prime链接器。这样做可以确保与旧库和代码结构的兼容性,从而避免Duplicate symbols错误。
- 打开Xcode,并选择你的项目。
- 在项目导航器中找到你的目标(Target)。
- 点击目标,然后选择“Build Settings”(构建设置)。
- 在搜索框中输入“Other Linker Flags”(其他链接器标志)。
- 在“Other Linker Flags”下,添加一行新的标志:“-ld64”。