私が取り組んでいるプロジェクトでは、次のプログラムを試してみたかった: http://sourceforge.net/projects/tirg/
これは 2 つの C++ ファイルで構成されていますが、Linux を実行している私のラップトップではコンパイルできませんが、Mac OS を実行している友人のラップトップでは問題なくコンパイルできます。私は C++ コードをコンパイルした経験がまったくないので、初歩的なミスかもしれません。
問題なくコードをコンパイルすることができた Mac OS を実行しているラップトップは、次の g++ バージョンを使用しました。
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
次のバージョンの Arch LInux (64 ビット) を実行しているラップトップで、gcc、g++、clang、clang++ を使用して C++ ファイルをコンパイルしようとしました。
gcc and g++ (GCC) 4.8.1 20130725 (prerelease)
clang version 3.3 (tags/RELEASE_33/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
コンパイル時に発生するエラーは次のとおりです。
/usr/include/c++/4.8.1/bits/stl_vector.h:1240:36: error: no matching function for call to ‘std::vector<std::vector<unsigned char> >::_M_fill_assign(int&, int&)’
{ _M_fill_assign(__n, __val); }
^
これは、次のコード行が原因でした:
std::vector<std::vector<trg::Rgb> > a(300, 255);
コンパイルの完全な出力をペーストビンに置きました: http://pastebin.com/m285PSrH
OpenCV のコンパイル時にも問題が発生したため、構成に問題がある可能性があります。たとえば、標準ライブラリのバージョンが間違っているなど、バージョン管理の問題だと思います。
C++ の経験が豊富な人が、何が問題なのかを指摘してくれることを願っています。ありがとう!