0

熱心にオープンソースの世界に飛び込むことにしたので、C/C++ 開発者向けの Eclipse IDE (Kepler Service Release 1) をダウンロードし、minGW をインストールしました。

ツールチェーンとして minGW を使用して新しいプロジェクトを作成しました。 を使用して hello world プログラムを作成できますが、 、スマート ポインター、またはその他の c++0x のもの<iostream>を作成しようとすると、「シンボルが見つかりません」というエラーが表示されます。tuple

#include <tuple>
int main(int in)
{
    std::tuple<int> lameTuple; // symbol "tuple" could not be resolved
    return 0;
}

-std=c++0xGCC C++ Compiler ツール設定のOther フラグに追加しようとしましたが、これは役に立たないようです。何か案は?

4

1 に答える 1

2

私もこの問題に遭遇しました。WindowsでEclipse + Mingw GCCを使用するのは信じられないほどです....このようなランダムな問題のため、ひどいセットアップです。たとえば、私のワークスペースには std=c++11 または gnu フラグ以外の回避策を必要としない C++11 プロジェクトが 1 つありますが、他のプロジェクトはこれに関係なく完全に停止します。

残念ながら、唯一の答えは、私がハックと見なすものです。Tuple ヘッダーを見ると、次のように表示されます。

#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else

ここで答え(解決策)が明らかになります。コンパイラ フラグまたは.cppファイル内の定義として、どこかで __cplusplus を greater than として定義する必要があります201103L。私がこれをどのように行ったかは、

プロジェクト プロパティ -> C/C++ 一般 -> パスとシンボル

次に、「シンボル」タブの下に、新しいシンボルを追加しました。使用したシンボル名と使用__cplusplusした値については201303L. これにより、インデクサーが強制的に再実行され、その時点で Eclipse は C++11 インクルードを正しく使用します。

余談ですが、誰かがすべてを適切にセットアップする Eclipse CDT + Mingw GCC インストーラーを作成するのは、もう終わりだと思います。この問題は、Mingw のバグ アウト バージョンから IDE での貧弱なインデックス作成と解析まで、この IDE とツールチェーンで遭遇する信じられないほど多くの問題のほんの一部にすぎません。その点については、Mingw のバグのあるディストリビューションを使用していないことを常に確認してください。これにより、これらの問題が発生する可能性もあります。

編集#1
このシンボルを使用する場合でも、「その他」の下にコンパイラフラグとして --std=X フラグを含める必要があることにも注意してください。このシンボルは、IDE が正しい C++11 サポートでヘッダーを解析するためのものです。

于 2014-03-25T13:32:56.383 に答える