我有一个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
我真的不明白可能导致这个问题的原因。有什么建议吗?
答案 0 :(得分:3)
如果您的源代码是C ++但正在编译为C,那么这是您将看到的更常见的错误之一。
如果源使用C ++文件的.C
(注释大写C)扩展名,则会发生这种情况。如果源用于不区分大小写的文件系统(通常与所有窗口一样),那么make
可能无法正确判断是将它们编译为C还是C ++。
默认情况下,make
(包括mingw版本)将从扩展程序.C
,.cc
和.cpp
编译C ++源代码。 (This page有详细信息)。
您有3个选项:
.cc
和.cpp
是最容易使用的。makefile
中的所有来源,您可以CC=mingw32-g++ mingw32-make -f Makefile.Debug
您可以将其添加到makefile
或其中一个包含的文件中:
%.o: %.c++
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
但这仅在makefile未更改编译规则时才有效。