![](/img/trans.png)
[英]iPhone Dev Objective-C - Object is being retained and I don't know where
[英]Objective-C with cpp extensions, I don't know what I'm doing
因此,當奇怪的錯誤從XCode中跳出來時,我仍然感覺像是一個新手。 昨天我開始得到這個:
___gxx_personality_v0”,引用自:___ gxx_personality_v0 $ non_lazy_ptr
那是在構建單元測試目標時,該目標使用XSD和iPhoneSDK中的.mm文件。 當我將文件擴展名更改回.m時,錯誤消失了,因為我尚未在其中使用C ++代碼。 (盡管我計划這樣做。)由於我的知識有限,我在Google上搜索並看到其他人指出使用了錯誤的編譯器。 另一個鏈接指向錯誤設置的標志。 憑借更加有限的知識,我決定選擇UnitTest目標中的鏈接器選項。 事實證明,“ 標准C ++庫”類型設置默認情況下設置為“動態” 。 將此設置更改為static后,我的錯誤消失了,我的測試現在變成綠色條...錯誤...綠色按鈕。 我在這里問是因為我仍然不知道自己在做什么。 顯然,此設置會影響編譯器,但我需要更多詳細信息。 我是不是在為即將到來的另一場災難性死亡做好准備? 如果有的話,這將產生什么負面影響? 為什么我以前沒有遇到問題? 我曾經在單元測試中使用過.mm文件,盡管我相信當時我正在使用GoogleToolsForMac
代碼庫進行單元測試,現在我使用本機XCode支持進行單元測試。 有人可以幫我解釋一下嗎?
簡短答案:發生錯誤是因為您使用gcc
驅動程序而不是g++
編譯C ++代碼。
更長的答案:當您調用gcc myfile.mm
,GCC驅動程序足夠聰明,可以從.mm
文件擴展名中識別出您正在編譯Objective-C ++代碼,因此可以很好地對其進行編譯。 但是,在鏈接時,如果您仍然使用gcc
作為驅動程序(也許您一步就能編譯並鏈接?),它就不會自動在C ++ stanbard庫(和支持目標文件)中鏈接,因此無法鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.