ios导入静态库时报错:"_OBJC_CLASS_$_"

报错:"_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文件


然后就可以正常运行了。。


你可能感兴趣的:(ios,报错)