繁体   English   中英

您可以将任何具有i386架构的库用于Cocoa / Mac OSX应用程序吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM