簡體   English   中英

XCode認為在為iOS構建時C ++文件是C嗎?

[英]XCode thinks C++ files are C when building for iOS?

我正在XCode 5.1.1中從事C ++項目。 該項目可以在OSX上正常編譯,但是在為iOS編譯時卻遇到了問題。 編譯器產生錯誤,表明它認為某些文件在C中,而不在C ++中。 有問題的文件似乎都是純頭文件,沒有相應的cpp文件。

作為背景,該項目基於Cocos2d-x 3.0,並在幾周前針對iOS進行了很好的編譯。 從那時起,我加入jl_signals這使得使用FastDelegate ,我知道做一些不規范的東西,是我無法理解。

這些是我遇到的一些錯誤:

namespace fastdelegate {

...產生錯誤:

[...]/jlsignal/FastDelegate.h:142:1: Unknown type name 'namespace'
[...]/jlsignal/FastDelegate.h:142:23: Expected ';' after top level declarator

另外,查找標准庫時遇到的問題:

#include <new>

...產生錯誤

[...]]/jlsignal/ScopedAllocator.h:7:10: 'new' file not found    

這個堆棧溢出問題表明編譯器試圖將項目構建為c而不是c ++,這似乎符合上述症狀,但是奇怪的是,它僅與該特定庫隔離。

我想知道我是否忽略了某個構建階段或XCode特定的復選框。 謝謝。

任何建議將不勝感激。

編輯 :有人建議我將文件從.m重命名為.mm,但是該文件是.h頭文件,因此我無法遵循此建議。 項目中的所有其他C ++文件都是.cpp文件,在我添加此庫之前,該項目肯定已經成功地作為C ++編譯。

編輯2 :好的,我已經開始工作了。 事實證明,關於.m與.mm的建議畢竟是正確的。 歸結為以下事實:在Cocos2d-x中,ios內部版本與Mac內部版本有一個獨立的主文件,稱為main.m。 我將其更改為main.mm,一切都很好。 整個項目都是用c ++編寫的,因此編譯器以某種方式對其進行了解析,但是這里有些東西被絆倒了。

Xcode為名為filename.mm任何文件激活c ++編譯器。 我猜您的文件名為filename.m

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM