當我嘗試調用我的C++實現文件中的函數(在標頭中用#ifdef __cplusplus extern「C」{}技巧標記爲C兼容)時,出現錯誤:在XCode中橋接C++和Swift,什麼是正確的生成設置?
「use of unresolved標識符'helloWorld()'「
我創建了橋接頭,只是在我的項目中添加了一個cpp和頭文件,並在它詢問我是否想創建橋頭時單擊」確定「。我在橋接頭文件中包含了「test.h」,其中包含函數聲明,但由於某些原因,Swift看不到該函數。
最奇怪的部分是,我創建了一個新的項目,並做了EXACT相同的過程,並調用helloWorld()工作正常,所以它是關於現有項目的東西我試圖添加cpp文件到那不是加工。
我假設這是一個構建設置問題,並且我一定把它們弄亂了,可能當我試圖導入一個靜態C/CPP庫時刪除了,但我爲它更改的一些構建設置可能會保留)。
那麼有沒有我應該知道的任何構建設置會解決這個問題?或者是否有辦法將我的構建設置完全重置爲默認設置(即使這意味着我必須重新創建橋接頭才能使橋接頭構建設置恢復到位)?
謝謝你的幫助!
詹姆斯
---編輯---
這裏是我的CPP頭:
這裏是我的CPP實現文件:
這是我的橋接報:
這裏是斯威夫特項目的相關部分:
這裏是構建設置,設置橋接報:
也許這:http://stackoverflow.com/questions/29327312/linker-error-when-trying-to-call-c-code-from-swift?否則請顯示test.h,test.cpp和Swift文件的相關部分。 – 2015-03-31 19:47:29
感謝您的答覆馬丁,不幸的是我的問題不是鏈接器錯誤,而是一個編譯器錯誤。 Swift甚至沒有認識到我正在架設的功能。 --EDIT--「不幸的是,我的問題不是鏈接器錯誤」 - 我不能相信我這麼說。 – 2015-03-31 20:07:12
我明白了,然後我不知道。 - 但一般來說,請複製/粘貼您的代碼,而不僅僅是截圖。如果有人試圖重現問題,這會變得更容易。 – 2015-03-31 20:14:14