2011-12-28 100 views
1

函數或類我有含有科科斯觸摸靜態庫(混合目標C,目標C++和C++)一個Xcode 4.2的工作區和一個cocos2d的iOS應用。靜態庫和iOS應用程序都是兄弟姐妹。鏈接器找不到在靜態庫(目標C)

的問題是試圖在靜態庫鏈接到的函數和類時,應用程序的連接失敗。該應用程序確實設置了「Link Binary With Libraries」的靜態庫。就好像靜態庫中的函數和類沒有被導出,或者沒有被應用程序查找。

例如,我創建了一個函數int foo() { return 42; },並將它放入庫中,然後在應用程序中將其從main.m中調用。

錯誤看起來是這樣的:

Undefined symbols for architecture armv7: 
    "_OBJC_CLASS_$_RootViewController", referenced from: 
    objc-class-ref in AppDelegate.o 
    "_foo", referenced from: 
    _main in main-972D78D1B1575F1.o 
    "_OBJC_CLASS_$_CCDirector", referenced from: 
    objc-class-ref in AppDelegate.o 
    objc-class-ref in libCocos2DBase.a(BaseScene.o) 
    objc-class-ref in libCocos2DBase.a(Director.o) 
    "_OBJC_CLASS_$_CCLayer", referenced from: 
    _OBJC_CLASS_$_FoundationLayer in libCocos2DBase.a(BaseScene.o) 
    "_OBJC_METACLASS_$_CCLayer", referenced from: 
    _OBJC_METACLASS_$_FoundationLayer in libCocos2DBase.a(BaseScene.o) 
    "_OBJC_CLASS_$_CCTexture2D", referenced from: 
    objc-class-ref in AppDelegate.o 
    "_OBJC_CLASS_$_EAGLView", referenced from: 
    objc-class-ref in AppDelegate.o 
    "_OBJC_CLASS_$_CCScene", referenced from: 
    objc-class-ref in libCocos2DBase.a(BaseScene.o) 
ld: symbol(s) not found for architecture armv7 
collect2: ld returned 1 exit status 

謝謝你這麼多的人,可以幫助,我是新來的XCode和已經花了很多時間尋找一個解決方案。

回答

1

它看起來像你的靜態庫沒有爲ARMv7架構編譯,而應用程序中使用它,因此它不能找到正確的符號。嘗試編譯armv7的靜態庫(或者如果您沒有源代碼,請參閱是否可以讓開發人員爲armv7編譯它)。

+0

很可能這是正確的。我試着爲模擬器(i386版本)和設備構建兩個版本,似乎庫和應用程序都在構建這個架構。我刪除了靜態庫項目並從頭開始重新創建它,並解決了這個問題,所以我不知道它的實際情況。 – 2011-12-29 04:36:30