2012-06-03 52 views
0

我有一個用於iOS的庫,它可以與iPhone模擬器和設備一起使用。當我在圖書館運行該文件的命令,我得到:你可以使用任何Cocoa/Mac OSX應用程序的i386架構庫嗎?

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引用我不得不刪除,但似乎多餘,因爲沒有用戶界面功能..它只是一個打開/連接到RTMP服務器的庫) - 或者它是一個鏈接錯誤? 一般來說,您可以使用爲iPhone開發的i386體系結構庫與Mac應用程序?

回答

1

好的,您對您的術語有點困惑。

IOS:

應用都是建立主要使用ARM架構iOS設備基礎和UIKit框架。 i386是模擬器,它是針對一組私有的Xcode框架構建的,以使其「正常」運行。靜態庫必須針對兩者進行編譯並捆綁到「通用二進制包」中,以便它們可以在兩個平臺上運行。

OS X:

應用是建立在可可和了AppKit對於i386架構。但是,它們是而不是與這些相同的Xcode框架鏈接的,因此它們不能在iOS設備上運行,並且必須在OS X環境中執行。爲了使框架「完全不依賴設備」,必須爲每種硬件編譯一個庫並將它們捆綁在一起。

因此它鏈接器錯誤,因爲您將RTMPClient文件包含爲庫的一部分,但它是針對錯誤的體系結構編譯的,或者不是「通用的」。

+0

是的 - 我想我的問題是 - 有沒有辦法讓它在Mac OSX上工作?我猜他們爲iOS模擬器編譯了一個版本,所以也許是因爲它是i386我可以如何使它工作? – user491880

+0

[YES!](http://stackoverflow.com/questions/3745907/library-for-both-ios-and-os-x-apps) – CodaFi

相關問題