6

CDT で Eclipse Juno を使用して、カスタム makefile で C++ プロジェクトを開発しています。私はC++ 11機能も使用しています。これは、SOのアドバイスに従ってEclipseのパーサーで作業する必要がありました。

問題は、Eclipse が STL コンテナー要素でアクセスされるメソッドまたはフィールドを解析できないことです。例えば:

mainapp.h

typedef struct _PlayerCalibrationData {
    [...]
    std::string getSamplesStr()
    {
            [...]
    }
} PlayerCalibrationData;

std::vector<MainApp::PlayerCalibrationData> m_calibrationData;

mainapp.cpp

m_calibrationData[0].getSamplesStr();

getSamplesStr()「メソッド 'getSamplesStr' を解決できませんでした」というメッセージとともに、下線が引かれ、エラーとしてマークされます。

ただし、Eclipse から呼び出すか、コマンド ラインから呼び出すかに関係なく、コンパイラは文句を言いません。

また、 を入力すると、コンテンツアシストm_calibrationData.を介してすべてのベクター メソッドがポップアップします (つまり、ベクター インクルードが見つからない Eclipse の問題ではありません)。エラーとして。[]at()

これがうまくいかないのは普通ですか?はいの場合、特にテンプレート ベースのコンテナーのアシスト/修正をオフにする方法はありますか?

編集

また、c++ 11 サポートを無効にしようとしましたが、そうすれば問題はなくなりますが、もちろん c++ 11 の型と構文は認識されません。

編集2

2 つ目のプロジェクトをインポートし、まったく同じ設定を入力したところ、このプロジェクトでは解析が機能しました。唯一の違いは、プロジェクトのレイアウトです (メイクファイルの場所が異なります)。しかし、最初のプロジェクトを削除して再インポートしても、まだ機能しません。

4

1 に答える 1

5

これは私のために働いた:

「あなたのプロジェクト名」 - >右クリック - >プロパティ:

C/C++ 一般 -> プリプロセッサ インクルード パス、マクロなど -> 「プロバイダ」という名前のタブに切り替えます。

  • 「構成」の場合は「リリース」を選択します(その後「デバッグ」)

  • すべてのプロバイダーをオフにして、「CDT GCC Built-in Compiler Settings」を選択するだけです

  • 「プロジェクト間で設定エントリを共有する (グローバル プロバイダ)」のチェックを外します

  • 「コンパイラ仕様を取得するコマンド:」で、引用符なしで「-std=c++11」を追加します (引用符でも機能する場合があります)。

  • 適用を押してオプションを閉じます

  • インデックスを再構築する

これは、自宅と職場の両方のマシーンで機能します。win7 x64、 sourceforgeのmingwbuildsプロジェクトのcdt mingw-w64 gcc 4.7.2を使用した最新の公式日食

于 2013-03-07T15:57:33.280 に答える