0

MSVC コンパイラで正常にコンパイルされる Qt C++ アプリケーションがあります。現在、同じアプリケーションを MinGW でコンパイルして、最終的に Mac OSX に移植できるようにしようとしています。ただし、そうすると、すべての標準インクルードでエラーが発生します。

#include <algorithm>
#include <ctime>
#include <map>
#include <sstream>
#include <vector>

コンパイラは次のように出力します。

..\trunk\stable.h:29:21: error: algorithm: No such file or directory
..\trunk\stable.h:30:17: error: ctime: No such file or directory
..\trunk\stable.h:31:15: error: map: No such file or directory
..\trunk\stable.h:32:19: error: sstream: No such file or directory
..\trunk\stable.h:33:18: error: vector: No such file or directory

何がこの問題を引き起こしているのか、私は本当に理解していません。なにか提案を?

4

1 に答える 1

4

これは、ソースが C++ であるのに C としてコンパイルされている場合によく見られるエラーの 1 つです。

これは、ソースが.CC++ ファイルの拡張子 (大文字の C に注意) を使用している場合に発生する可能性があります。ソースが大文字と小文字を区別しないファイル システムで使用されている場合 (通常、すべての Windows のファイル システムと同様)、ソースmakeを C としてコンパイルするか C++ としてコンパイルするかを正しく判断できない可能性があります。

デフォルトでは、make(mingw バージョンを含む) は、拡張子.C.ccおよびから C++ ソースをコンパイルします.cpp。(このページに詳細があります)。

次の 3 つのオプションがあります。

  • ソースの名前を上記の拡張子のいずれかに変更します。一般的.cc.cpp、最も扱いやすいです。
  • 内のすべてのソースの場合は、makefile移動できますCC=mingw32-g++ mingw32-make -f Makefile.Debug
  • makefileこれを、含まれているファイルまたはいずれかのファイルに追加できます。

    %.o: %.c++
        $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
    

    ただし、これは、メイクファイルがコンパイルのルールを変更していない場合にのみ機能します。

于 2012-06-02T10:02:08.520 に答える