2015-08-24 41 views
0

我有以下文件:如何使用C++參數調用Objective C++函數?

  • MyCppClass.cpp - 純C++

  • MyObjCppClass.h - 純C++類的定義與C++函數原型。

  • MyObjCppClass.mm - 帶有使用ObjC的函數體的C++樣式函數。有C++風格的功能,而不是ObjC。

純粹的C++類包括ObjC++頭和新聞MyObjCppClass的實例。然後我嘗試在ObjCpp類上調用函數。問題是,當我嘗試調用需要參數的函數時。

如果我沒有參數調用函數,一切都很好。但是,如果我嘗試調用一個帶參數的函數,那麼在編譯時會出現符號未找到鏈接錯誤。我最初認爲這個名字被破壞,但認爲這不是問題,因爲它們都是純C++。即使我從身體中移除ObjC,也會得到同樣的錯誤。我很好奇,如果我錯過了一步?

重要的是要注意,我傳入的參數引用了靜態鏈接庫中包含的純C++對象。它似乎只是一個問題,因爲我可以在函數體內使用它們而沒有任何問題。

我使用的是Xcode 6.4,C++ 11和Clang。

任何幫助,將不勝感激。

+1

沒有任何代碼,很難說出發生了什麼。你是否在使用模板? – dreamlax

+0

找不到什麼符號?他們是ObjC類嗎? C++類?系統的東西?某個.m文件是否還包含其中一個標題?你的ObjC++頭部可能包含或使用ObjC的東西?如果沒有更多的信息或者更好的(最小的)示例代碼來展示這個問題,我們就無法提供幫助。 – uliwitness

回答

0

對不起,我應該添加更多信息和代碼。事實證明,這是我的一個愚蠢的錯誤。

我已經忘記了包含該類的名稱後面跟着兩個冒號,前面有參數的函數名稱。

所以我有問題是這樣的:

void functionThatTakesArgs(SomeClass& someClass) { } 

時,我真的應該有什麼樣的是:

MyObjCppClass::functionThatTakesArgs(SomeClass& someClass) { } 

希望這可以幫助別人。發生是一個愚蠢的錯誤。