2

コンパイルされたソースファイルからオブジェクトファイルを作成しようとすると、コンパイルエラーが発生します。c++11に付属のヘッダーを使用しています。また、他のいくつかのインクルードとともにc++パターン認識ライブラリを使用しています。

#include <thread>rbm_test.ccソースファイルに追加するだけでした。

私のコンパイルコマンド:

g ++ -std = c ++ 11 -O3 -DQUIET -fPIC -pthread -ansi -pedantic -DARCH_INTEL -Wall -W -Wchar-subscripts -Wpointer-arith -Wcast-qual -Wwrite-strings -Wconversion -Wno-old-style -cast -Wctor-dtor-privacy -Wnon-virtual-dtor -I ../ src -I ../ .. -DPATREC -D_ UNIX _ -o rbm_test.o -c ../src/rbm_test.cc

私が得るコンパイルエラーは次のとおりです。

エラー:#errorこのファイルには、ISO C++2011標準のコンパイラとライブラリのサポートが必要です。このサポートは現在実験段階であり、-std = c++11または-std=gnu++11コンパイラオプションを使用して有効にする必要があります。

不思議なことに、次のコード例をコンパイルすると

g ++ -std = c ++ 11 -pthread -c main.cpp -o main.o

その後、エラーはありません。

ここはmain.cpp

#include <iostream>
#include <thread>

void f1()
{
  std::cout << "Thread  executing\n";
}

int main()
{
    std::thread t1(f1);
    std::thread t2(f1);
    t1.join();
    t2.join();
}

rbm_test.ccをコンパイルしようとすると、コンパイルフラグの一部が競合する可能性はありますか?

4

1 に答える 1

8

--ansiフラグはフラグと競合し-std=c++11ます。-ansiと同等-std=c++98です。フラグを削除-ansiすると、問題が解決します。

于 2013-03-26T08:14:09.733 に答える