Xcode 15上C++闪退Factroy_ResLoader::get_inst

使用 Xcode 15 真机调试,在 iOS 10.3 上设备启动立马闪退,Xcode 报错如下

xxx`Factroy_ResLoader::get_inst:
0x101f1797c <+0>: stp x29, x30, [sp, #-0x10]!
0x101f17980 <+4>: mov x29, sp
0x101f17984 <+8>: adrp x8, 1921
0x101f17988 <+12>: ldr x8, [x8, #0xba8]
-> 0x101f1798c <+16>: ldarb w8, [x8]
0x101f17990 <+20>: tbnz w8, #0x0, 0x101f179dc ; <+96>
0x101f17994 <+24>: adrp x0, 1921
0x101f17998 <+28>: ldr x0, [x0, #0xba8]
0x101f1799c <+32>: bl 0x102150734 ; symbol stub for: __cxa_guard_acquire
0x101f179a0 <+36>: cbz w0, 0x101f179dc ; <+96>
0x101f179a4 <+40>: adrp x1, 1921
0x101f179a8 <+44>: ldr x1, [x1, #0xba0]
0x101f179ac <+48>: str xzr, [x1, #0x10]
0x101f179b0 <+52>: mov x8, x1
0x101f179b4 <+56>: str xzr, [x8, #0x8]!
0x101f179b8 <+60>: str x8, [x1]
0x101f179bc <+64>: adrp x0, 14
0x101f179c0 <+68>: add x0, x0, #0xa80 ; Factroy_ResLoader::~Factroy_ResLoader()
0x101f179c4 <+72>: adrp x2, -6471
0x101f179c8 <+76>: add x2, x2, #0x0 ; _mh_execute_header
0x101f179cc <+80>: bl 0x1021538e4 ; symbol stub for: __cxa_atexit
0x101f179d0 <+84>: adrp x0, 1921
0x101f179d4 <+88>: ldr x0, [x0, #0xba8]
0x101f179d8 <+92>: bl 0x1021509ec ; symbol stub for: __cxa_guard_release
0x101f179dc <+96>: adrp x0, 1921
0x101f179e0 <+100>: ldr x0, [x0, #0xba0]
0x101f179e4 <+104>: ldp x29, x30, [sp], #0x10
0x101f179e8 <+108>: ret

解决办法: 在build setting -> Other Linker Flags 添加 -Wl,-ld_classic

需要注意的是,如果在Xcode 14 及以下开发工具添加了 -Wl,-ld_classic 又会报错,需要删掉它才行。

参考链接

https://developer.apple.com/forums/thread/736203