2011-05-25 112 views
0

我在Obj-C代碼中使用C++對象。爲此,我將ObjC對象中的C++對象封裝起來,然後使用不透明的指針訪問C++類。那東西正在工作。從Obj-C/Obj-C++使用C++對象 - 調用外部方法

問題: C++對象(例如CPPObj.cc)使用來自其他C++頭文件(例如ToolsCPP.h)的方法---當我嘗試編譯ObjC代碼(例如Obj.mm)時,它抱怨那些方法是未定義的。

即使我直接在Obj.mm文件中包含ToolsCPP.h,它仍然會抱怨。

醜陋的解決方案: 在CPPObj.cc中包含ToolsCPP.h中所有必需的方法,以便C++對象完全自包含。這將是一個巨大的痛苦。

有沒有更好/更容易/正確的方法來做到這一點?

謝謝!

+2

如果您將編譯器正在編寫的確切錯誤消息放在一起,會很有幫助。 – ThomasW 2011-05-26 01:24:12

回答

0

聽起來好像你想要將你的ToolsCPP代碼(和任何其他C++依賴項)打包到一個庫中,然後將它與Obj-C代碼鏈接起來。

0

你要麼必須包裝需要(例如,使用objc方法)是什麼,或者使用objC++允許客戶端適當地使用C++類型。

+0

作者提到該文件是Obj.mm,所以看起來他使用的是objC++。 – ThomasW 2011-05-26 01:52:42

0

由於這顯然是一個鏈接器錯誤,這意味着來自「ToolsCPP.cc」的代碼(即與ToolsCPP.h對應的代碼)沒有被編譯並且與您的項目的其餘部分鏈接。

檢查ToolsCPP.cc是否包含在您的項目中,並確認它實際上正在編譯。