报错:"_OBJC_CLASS_$_"
ld: warning: ignoring file test/libXXX.a, file was built for archive which is not the architecture being linked (x86_64): test/libXXX.a
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_XXX", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)查看了很多方法,静态库导入没有问题
原因:
由于我导入的是比较老的项目,所以使用的架构已经不适用于当前的设备了
解决方法:
修改为合适的设备-iPhone4s,这个问题就没有再出现了。
但是出现了新的问题:Undefined symbols for architecture i386:
Undefined symbols for architecture i386:
"operator delete(void*)", referenced from:
-[XXX init] in libXXX.a(XXX.o)
-[XXX initWithIP:andPort:] in libXXX.a(XXX.o)
-[XXX dealloc] in libXXX.a(XXX.o)
"operator new(unsigned long)", referenced from:
-[XXX init] in libXXX.a(XXX.o)
-[XXX initWithIP:andPort:] in libXXX.a(XXX.o)
"___gxx_personality_v0", referenced from:
Dwarf Exception Unwind Info (__eh_frame) in libXXX.a(XXX.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)最终确定是缺少了libc++,所以要添加libc++
设置-》target-》build phase-》Link Binary With Libraries-》添加 搜索libc++,选择libc++.tbd文件
然后就可以正常运行了。。

在导入老项目的静态库时遇到 '_OBJC_CLASS_$_' 报错,问题源于不兼容的设备架构。通过将目标设备改为iPhone4s解决了此问题。然而,接着出现了新的问题:对于architecture i386的未定义符号。通过在Link Binary With Libraries中添加libc++.tbd文件成功修复了这一问题,使得项目可以正常运行。

1万+

被折叠的 条评论
为什么被折叠?



