2012-07-11 40 views
2

我想在我的ios應用程序中使用C++代碼(我真的不喜歡目標C,我只在必要時才使用它[視圖控件,等等),而一切似乎正在工作,我在下面的測試文件中得到一個錯誤。如何在xcode 4.3中包含C++標準庫

#ifndef prueba3_GlobalStatic_h 
#define prueba3_GlobalStatic_h 
#include <string> 

using namespace std; 

class GlobalStatic 
{ 
public: 
    GlobalStatic(); 
    ~GlobalStatic(); 
    string foo(); 

private: 
    int integerValue; 
}; 

#endif 

當我嘗試構建項目的IDE給我以下錯誤: 我環顧四周,但不能找到令人信服的答案 「未找到‘字符串’文件」;任何幫助,將不勝感激。實質上,我如何獲得標準庫的工作?

+0

你是如何編寫代碼的?你能看到IDE使用的命令行嗎? – 2012-07-11 15:44:59

+0

文件.mm的擴展名是? – 2012-07-11 15:53:17

+0

請注意,不是更改文件擴展名,您可以進入「獲取信息」並更改文件類型。 – 2012-07-11 16:03:54

回答

3

丟失C++頭文件的一個原因是從一個objective-c上下文中包含它們,而不是從objective-C++中 - 而且你不能在c中使用C++ stl!更簡單的解決方案是簡單地將所有.m文件更改爲.mm,.mm會將它們發送到objective-C++編譯器。

+0

在.cpp文件及其對應的.h文件中發現了我的錯誤,我是否必須將.m文件(我項目中的其他文件)更改爲.mm以使其工作?我已將.cpp更改爲.mm,但無效。 – Galipan 2012-07-11 16:10:03

+0

如果錯誤出現在.h文件中,並且.h被直接或以其他方式包含在.m文件中,則.h文件中的所有內容都將作爲.m上下文的一部分進行編譯。因此,要更具體地回答每個包含任何方法的C++代碼(如此頭文件)的每個目標c(.m)文件,都必須發送到目標C++編譯器(重命名爲.mm) – robk 2012-07-11 16:14:17

+0

rename .m - >。mm,not。 cpp - >。mm,.cpp - >。mm解決了在C++文件中包含objective-C++的另一個問題 – robk 2012-07-11 16:21:19