2

我尝试创建Cocoa Touch Static Library并遵循这些步骤。

  1. 用它命名创建新项目Cocoa Touch Static Library默认情况下,我得到一个带有Demo.hand的类Demo.m

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的库也存在。

4

3 回答 3

0

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

于 2013-06-28T04:21:25.417 回答
0

检查以下内容:

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

更新

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

lipo -创建 libHelloWorldCppLibPhone.a libHelloWorldCppLibSimulator.a -输出 libHelloWorldCppLib.a

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

于 2013-06-28T04:47:10.463 回答
0

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

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

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

于 2013-06-28T09:36:23.737 回答