Iphone 向项目中添加静态库时出错

Iphone 向项目中添加静态库时出错,iphone,ios,xcode4,static-libraries,Iphone,Ios,Xcode4,Static Libraries,我试图通过示例学习在我的Xcode项目中创建和使用静态库。然而,我不断地发现这个错误: ld: warning: ignoring file /Developer/MathTest/iCodeBlogsMathLibrary/libICodeMathUtils.a, missing required architecture i386 in file Undefined symbols for architecture i386: "_OBJC_CLASS_$_MathFunctions

我试图通过示例学习在我的Xcode项目中创建和使用静态库。然而,我不断地发现这个错误:

ld: warning: ignoring file /Developer/MathTest/iCodeBlogsMathLibrary/libICodeMathUtils.a,    
missing required architecture i386 in file
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_MathFunctions", referenced from:
  objc-class-ref in MathTestViewController.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

我可能会错过什么

您似乎是在构建与i386体系结构相对应的模拟器,但您只是在链接一个iphone(arm)库

为了解决这个问题,您应该为i386和arm编译库libICodeMathUtils.a

在阅读了您所遵循的教程之后:在项目中集成静态库的更好方法是定义依赖项。你可以看这篇S.O.的文章,也可以看这篇文章(步骤在问题本身中给出)

另一种选择是分别为i386(模拟器)和arm(设备)构建库,然后使用命令行工具
lipo
创建一个fat库,您可以在MathTest项目中链接该库。检查
man lipo
以了解hoy如何使用该工具

编辑:关于你的评论

我的静态库不显示在目标依赖项中

是否已将静态库从包含的项目树拖到目标?Xcode 3的步骤如下:

  • 将库项目添加为包含的项目


  • 在包含的项目中找到静态库,并将其拖到主目标上,将其作为链接框架添加

  • 最后,在目标信息窗格中,可以添加依赖项

  • 如果将目标添加到项目方案中,Xcode4似乎能够自动找出依赖项。您可以通过执行:编辑方案->构建->然后从工作区中添加目标来完成此操作。另见此。

    在我的例子中

    > 查找“其他链接器标志”生成设置。如果此生成设置的值尚未存在,请将标志-ObjC添加到此生成设置的值中
    您好,我在回答的末尾添加了2个链接,并附有说明。“将其拖到您的主要目标上,将其添加为链接框架”,但Xcode 4中的目标文件夹在哪里?