我正在使用SDWebImage
库。当我使用iPhone时它工作正常,但是当我使用模拟器编译时它不起作用。我收到这个错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SDWebImageManager", referenced from:
objc-class-ref in ViewController.o
objc-class-ref in DetailViewController.o
"_OBJC_CLASS_$_SDWebImagePrefetcher", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
但是在使用iPhone设备编译时它没有出现任何错误。我正在使用.a
文件。
答案 0 :(得分:1)
如果出现此错误,则不会为模拟器(i386
)体系结构编译库。这个问题无法解决。
您还需要获取源代码,以便为此体系结构编译lib。或者您可能会问作者是否可以为您编译模拟器支持的版本。
也有可能从支持armv7
的{{1}}库中制作“胖二进制文件”。这是因为armv7s
具有相同的说明,扩展 armv7s
。
由于armv7
具有完全不同的指令,因此无法在模拟器中使用仅限arm的库。
编辑有关详细信息,请参阅this support matrix
EDIT II 如果你自己编译lib,你也必须包含intel架构。由于模拟器在Mac(英特尔处理器,而不是ARM)上运行,因此正确的架构为i386
。你会看到上面提到的矩阵了解更多细节。