![](/img/trans.png)
[英]How to build Cocoa Touch Framework for i386 and x86_64 architecture?
[英]Can you use any library with the i386 architecture for a Cocoa/Mac OSX app?
我有一个用于iOS的库,它可与iPhone模拟器和设备一起使用。 当我在库上运行file命令时,我得到:
libXXX.a (for architecture armv6): current ar archive random library
libXXX.a (for architecture i386): current ar archive random library
现在,我想为OSX应用程序使用相同的库。 我将架构设置为32位i386。 但是我得到一些编译错误:
Undefined symbols for architecture i386:
".objc_class_name_RTMPClient", referenced from:
pointer-to-literal-objc-class-name in AppDelegate.o
我不确定错误是否是因为库最初是为iOS开发的(标头都包含我必须删除的UIKit引用,但由于没有UI功能而显得多余,..它只是一个用于打开/连接到RTMP服务器的库)-还是链接错误? 通常,您可以将为iPhone开发的i386体系结构库与Mac应用程序一起使用吗?
好的,您对术语有些困惑。
iOS:
应用程序主要使用ARM体系结构上的iOS设备的Foundation和UIKit框架构建。 i386是模拟器,它基于一组专用Xcode框架构建以使其能够“正确”运行。 静态库必须针对两者进行编译,并捆绑到“通用二进制包”中,以便它们可以在两个平台上运行。
OS X:
应用程序是针对i386体系结构在Cocoa和Appkit中构建的。 但是,它们没有链接到相同的Xcode框架,因此它们不能在iOS设备上运行,必须在OS X环境中执行。
为了使框架“完全与设备无关”,必须为每种硬件编译一个库并将它们捆绑在一起。
因此,这是一个链接器错误,因为您将RTMPClient文件作为库的一部分包含在内,但它是针对错误的体系结构而不是“通用”进行编译的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.