0

我有一个 Qt C++ 应用程序,可以用 MSVC 编译器很好地编译。现在我正在尝试使用 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,这是您将看到的更常见的错误之一。

如果源.C对 C++ 文件使用(注意大写 C)扩展名,则会发生这种情况。如果源文件用于不区分大小写的文件系统(通常像所有 Windows 文件系统一样),则make可能无法正确判断是将它们编译为 C 还是 C++。

默认情况下,(make包括 mingw 版本)将从 extensions.C和. (此页面有详细信息)。.cc.cpp

您有 3 个选项:

  • 将您的来源重命名为上述扩展名之一。通常.cc并且.cpp是最容易使用的。
  • 如果 中的所有来源makefile,你可以去CC=mingw32-g++ mingw32-make -f Makefile.Debug
  • 您可以将其添加到makefile包含的文件或其中一个文件中:

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

    但这只有在 makefile(s) 没有更改编译规则时才有效。

于 2012-06-02T10:02:08.520 回答