我有一个Xcode项目,其中包含一个静态库项目,该项目使用另一个不支持iOS模拟器架构的静态库(Vuforia SDK:libQCAR.a)。
必须将Vuforia应用程序部署到设备上才能运行;它们无法在iOS模拟器中运行。
这是我的项目结构:
我的问题是MyApp.xcodeproj
没有为iOS模拟器构建,因为libQCAR.a
不是为i386架构而构建的。
在构建i386时,有没有让MyApp.xcodeproj
忽略libQCAR.a
库?我可以使用#if !(TARGET_IPHONE_SIMULATOR)
答案 0 :(得分:5)
您可以使用conditional build settings指定仅在给定平台上链接的库,而不是以通常的方式将库添加到项目中。具体来说,您需要指定:
-lQCAR
在“其他链接标志”中。
看一下应该让事情变得更清晰的附加图像(在我只链接模拟器的图片中,你想要选择一个设备,我猜)。
另外,不要忘记将包含库的目录的路径添加到“Library Search Path”构建设置(这不需要是有条件的;它不会对模拟器造成任何伤害)。
答案 1 :(得分:3)
这个问题与Xcode: Conditional Build Settings based on architecture (Device (ARM) vs Simulator (i386))
非常相似我相信sergio的解决方案非常接近,但您是否尝试在其他链接器标志下指定库的完整路径(可能没有“-l” - 只是路径)?
答案 2 :(得分:2)
尝试告诉链接器您的静态库应该可选地链接。
这肯定会在构建过程中产生警告,但构建应该会成功,并且您的应用程序不应该在运行时崩溃,因为您禁用了使用Static Lib的所有代码路径。
答案 3 :(得分:0)