2014-01-24 47 views
1

我有一個第三方靜態庫,其中包含用C++編寫的頭文件。我已鏈接庫,但得到編譯錯誤,因爲頭文件使用#include給出文件未找到錯誤。它是一個庫,所以我不認爲我應該編輯該文件,那麼是否有這樣的標誌或屬性來改變項目設置來編譯該頭文件?如何將靜態庫中的C++頭文件導入Obj-C?

該錯誤是在發生的事情:ViewRightWebiOS.h

特定行的錯誤是在第三行:

#include <string> 
+0

頭文件如何使用#import? - 你的意思是#import C++頭文件 - 你的措辭意味着C++頭文件使用#import – Mark

+0

Objective-C沒有C++結構的知識..即:析構函數。你的頭文件必須是純C或普通的Objective-C。你不能指望在Objective-C中將''與'std :: string'一起使用。相反,導出您的數據分別使用'const char *'或'char *'。 – Brandon

+0

@Mark - 對不起,錯別字我的意思是包括 – robotwholearned

回答

0

只能導入C++頭文件而不是使用C++編譯的文件。

執行此操作的簡單方法是,將包含#include的文件重命名爲擴展名爲.mm,而不是.m的Objective C正常擴展名.Xcode將使用Objective-C++方言編譯此文件。在這種模式下,C++和Objective C結構可以在同一個文件中理解。但是,您可以在C++對象上使用Objective C功能,反之亦然,互操作仍使用通用的C語言結構

+0

這解決了第一個錯誤,但事實證明,在使用的實際專有庫中存在一些非常錯誤的情況,我會向他們提交支持服務單。感謝您的幫助! – robotwholearned

0

如果可以的話,你應該在你的執行文件的文件(。 m)文件,但將其重命名爲.mm。這樣你實際上會使用Objective-C++,但它應該沒問題。