2011-07-11 88 views
1

我正在XCode(3.2.6)中爲Mac構建一個Maya應用程序。我正在構建自己的鏈接庫,另外我還鏈接了應用程序中包含的一些Maya庫。 Maya是64位的,看起來,當我從終端上運行一個dylib時,我需要鏈接到它所說的「64位動態鏈接分片庫x86_64」。這很好,我可以建立我的所有項目。如何擺脫XCode Architecture鏈接錯誤?

不過,我得到一噸的警告,所有這樣說的:

...dylib, file was built for unsupported file format which is not the architecture being linked (i386) 

我得到一個每個LIB我鏈接,包括我所建的人。我有一個奇怪的懷疑,這個警告是嚴重的,並且影響到它的可用性。 Maya無法加載我的頂級捆綁包,我猜這是因爲這個警告。至少,擺脫它們是件好事,因爲來自Windows的聲音聽起來很糟糕。我的所有項目設置對於「架構」設置通常都是相同的。我的「架構」只設置爲「64位英特爾」,我的「有效架構」設置爲「ppc64 x86_64」。我以前有我的後一個論點包括更多的「i386 ppc ppc64 ppc7400 ppc970 x86_64」,但那也不起作用。我已經嘗試了很多不同的設置,但沒有運氣擺脫這些警告。

我想我的問題是:什麼決定了「架構被鏈接」? i386警告來自哪裏?它似乎不是一個項目設置。這聽起來像是什麼東西可以在腳下擊中我?任何建議擺脫它?

回答

2

i386是32位x86。你需要確保你建立的所有庫都是x86-64。請注意,檢查項目設置可能不夠充分,因爲架構可以在目標級別覆蓋,因此您還需要檢查每個目標的架構。

+0

好吧...所以我從我的項目中刪除了所有不必要的庫。所有剩下的(只有4個)是x86_64,我使用「file」命令檢查了它。此外,我生成的庫是x86_64。我的架構也設置爲x86_64,但我仍然收到警告。否則,我唯一的其他組件是zlib.dylib(標準Mac壓縮庫)和其他四個框架(Carbon,IO,GLUT和OpenGL)。你知道什麼可以給我的i386?謝謝保羅。 – Erik

+0

@Erik:你需要檢查錯誤信息,看看剩下的庫有哪些錯誤的架構 –

+0

Paul ...再次感謝您的幫助。我創建的庫是x86_64。另外,我鏈接到的其他庫是x86_64。對於目標和項目,我都將「有效體系結構」設置爲ppc64和x86_64,將「體系結構」設置爲64位英特爾。我清理了解決方案並重建了很多次。我查了zlib,看起來Mac有三種基於人們可能需要的架構的不同版本。不過,我仍然會得到警告,提醒他們「不是被鏈接的架構(i386)」。 – Erik