我有一个iOS Xcode项目,可以在Simulator和设备中构建并运行良好。但是,我有一个新功能,需要使用静态库(仅为ARM体系结构构建) - 这意味着它构建和在设备上运行正常,但对于模拟器,我收到此错误 -
ld: warning: ignoring file libXYZ.a, file was built for archive which is not the architecture being linked (x86_64): libXYZ.a
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_XYXClass", referenced from: objc-class-ref in MyAppClass.o
我理解这个问题,但我仍然希望能够构建&在Simulator中运行应用程序(可能通过在Simulator中排除或禁用需要静态库的新功能)。
我尝试了以下项目设置,以便应用程序也可以为Simulator构建 -
没有任何效果。有什么想法我可以为模拟器构建?谢谢!
答案 0 :(得分:1)
最简单的解决方案可能只是构建带有intel切片的静态存档(针对iOS模拟器SDK)以及它们的4路胖(i386 + x86_64 / iOS Simualtor和armv7 / arm64 / iOS) )。
如果无法做到这一点,请解释为什么您无法做到这一点并在http://bugreport.apple.com处提交雷达,这样我们就可以解决阻止您构建静态存档的任何问题。
如果您想在iOS模拟器版本中不使用静态存档而继续操作,则需要避免在模拟器中使用XYXClass。您可以通过执行以下操作来执行此操作:
#include <TargetConditionals.h>
#if TARGET_IPHONE_SIMULATOR
// Do sim-specific fallbacks
#else
// Do stuff with XYXClass
#endif
请注意,“警告:忽略文件libXYZ.a ...”消息不是致命的。这只是一个警告,你可以忽略。致命的部分是你使用XYXClass,它在x86_64中没有实现。