创建静态库iOS错误

时间:2013-06-28 04:18:22

标签: iphone ios xcode

我尝试创建Cocoa Touch Static Library并按照以下步骤操作。

  1. 使用Cocoa Touch Static Library命名创建新项目默认情况下,我使用Demo.hDemo.m进行单一课程。
  2. 2.在.h中创建一个公共函数,并在.m中实现。

    3.选择iOS Device,然后按cmd + B

    4.从产品中复制Demo.a.h文件将其放入我想要使用它的iOS App中。

    5.然后导入Demo.h并尝试调用我写的函数。

    问题

    尝试运行显示此错误的项目时。

    ld: warning: ignoring file /Users/Zenga/Documents/iOS/Static Library/myAppwithLib/Demo.a, file was built for archive which is not the architecture being linked (i386): /Users/Zenga/Documents/iOS/Static Library/myAppwithLib/Demo.a
    Undefined symbols for architecture i386:
      "_OBJC_CLASS_$_Demo", 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)
    

    如果有人对此有任何疑问,请提供帮助。如果您的类'.m文件未在“编译源”下列出,则会出现这种类型的错误,但在这种情况下,我检查的库Demo.a也在那里。

3 个答案:

答案 0 :(得分:0)

如果您的类'.m文件未列在目标“构建阶段”选项卡的“编译源”步骤下,则可能会出现此类错误。在Build Phases中手动插入ViewController.m类&然后检查。

答案 1 :(得分:0)

检查以下内容:

选择您的项目
选择“构建设置”
检查架构: 有效的架构应该是“armv6 armv7”
支持的平台应该是“iphonesimulator iphoneos”(也许iPad,我不知道)
基础SDK - 您的iOS SDK(我有iOS 5.0) 确保“仅构建活动架构”设置设置为“否”。

<强>更新

在构建库时,必须为模拟器和设备编译它,然后将两个输出(.a文件)合并到1个库中,然后将其链接到iOS项目。

  

lipo -create libHelloWorldCppLibPhone.a libHelloWorldCppLibSimulator.a   -output libHelloWorldCppLib.a

并将合并后的结果导入我的iOS项目

答案 2 :(得分:0)

我有这个问题,我用本教程解决了它

http://www.cnblogs.com/simonshi2012/archive/2013/06/18/3141541.html

它构建了编译脚本,因此您只需单击构建版本,您的库将与两个版本一起编译。