2011-11-16 81 views
1

我在Xcode中只有一個非常小的程序,只顯示標籤並在viewWillAppear方法中更改標籤的文本。該label.text應該來自一個C++庫,這樣的功能:(!)XCode 4.2中的C++無法編譯(鏈接?)

int getNumber(){ 
    return 42; 
} 

的問題是,包括#進口「TestLibMain.h」我* .mm類類並採用與

TestLibMain *tlb = new TestLibMain(); 
int myInt = tlb->getNumber(); 
NSString *myString = [NSString stringWithFormat:@"%d",myInt]; 

函數不調用編譯器錯誤,但鏈接器錯誤:

爲i386硬件架構未定義的符號: 「TestLibMain :: getNumber()」,從引用: - [ tbViewController buttonPressed:在tbViewController.o LD:符號(S)沒有找到i386硬件架構 鐺:錯誤:連接命令,退出代碼爲1(使用-v看看調用)

我的印象是失敗的,該cpp-class尚未編譯。

我嘗試了很多東西,但它在某處懸掛着。它都在同一個目錄下,我使用.mm擴展名,一切正常,但總是出現這個鏈接器錯誤。變得瘋狂:-)

Mac OS X Lion,XCode 4.2

任何想法?

+0

該庫是爲32位還是64位體系結構構建的? –

+0

有趣的問題。我希望在編譯Xcode-project時自動創建包含函數getNumber()的庫「TestLibMain」。所以我沒有任何預編譯的庫。總的來說我錯了嗎? –

回答

5
int getNumber() { 
    return 42; 
} 

.cpp.mm定義getNumber()作爲遊離功能。此:

int TestLibMain::getNumber() { 
    return 42; 
} 

getNumber()定義爲的TestLibMain成員。

+0

是的。你贏了價格,比很多:-) –