我尝试创建Cocoa Touch Static Library
并按照以下步骤操作。
Cocoa Touch Static Library
命名创建新项目默认情况下,我使用Demo.h
和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
也在那里。
答案 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
它构建了编译脚本,因此您只需单击构建版本,您的库将与两个版本一起编译。