MinGW Windows.h 无法编译

Posted

技术标签:

【中文标题】MinGW Windows.h 无法编译【英文标题】:MinGW Windows.h does not compile 【发布时间】:2013-02-24 13:42:56 【问题描述】:

我在 64 位 Windows 7 上使用 MinGW g++ 4.6.2。至于 IDE,我使用 Eclipse CDT。

我的项目有问题 - 当我包含“Windows.h”文件时,我遇到了数千个错误。我试图创建一个仅包含 Windows.h 的不同文件,但它给出了相同的错误。

.h:

/*
 * WinWrapper.h
 *
 *  Created on: Feb 24, 2013
 *      Author: martin
 */

#ifndef WINWRAPPER_H_
#define WINWRAPPER_H_

char* winGetMainModule();

#endif /* WINWRAPPER_H_ */

.cpp:

#include "WinWrapper.h"

#include <windows.h>

char* winGetMainModule() 



    return nullptr;


没有其他文件包括“WinWrapper.h”或 Windows.h。

template with C linkage GameProj        line 172, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\bits\locale_classes.tcc C/C++ Problem
template with C linkage GameProj        line 228, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\bits\locale_classes.tcc C/C++ Problem
template with C linkage GameProj        line 128, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\bits\locale_classes.tcc C/C++ Problem
template with C linkage GameProj        line 133, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\bits\locale_classes.tcc C/C++ Problem
confused by earlier errors, bailing out GameProj        line 118, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\bits\ios_base.h C/C++ Problem
declaration of C function 'constexpr std::_Ios_Openmode std::operator&(std::_Ios_Openmode, std::_Ios_Openmode)' conflicts with  GameProj        line 117, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\bits\ios_base.h C/C++ Problem
previous declaration 'constexpr std::_Ios_Fmtflags std::operator&(std::_Ios_Fmtflags, std::_Ios_Fmtflags)' here GameProj        line 77, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\bits\ios_base.h  C/C++ Problem
template with C linkage GameProj        line 614, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\type_traits C/C++ Problem
template with C linkage GameProj        line 623, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\type_traits C/C++ Problem
template with C linkage GameProj        line 629, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\type_traits C/C++ Problem
template with C linkage GameProj        line 636, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\type_traits C/C++ Problem
template with C linkage GameProj        line 592, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\type_traits C/C++ Problem
template with C linkage GameProj        line 598, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\type_traits C/C++ Problem
template with C linkage GameProj        line 602, external location: c:\mingw\lib\gcc\mingw32\4.6.2\include\c++\type_traits C/C++ Problem

... + 大约 200 KB 的其他错误日志

其他项目信息:

    使用库 SDL、SDL_Image 已定义 TARGET_WINX86 编译器标志 -c -fmessage-length=0 -std=c++0x

不知道发生了什么。请帮忙,在此先感谢:))

【问题讨论】:

有点奇怪,但听起来好像您在构建命令中使用的是gcc 而不是g++。你为什么不显示你的构建命令。 pastebin.com/SfEhHXcT 感谢您的帮助 【参考方案1】:

来自 C:\workspace\GameProj\src\Base/string.h

↑罪魁祸首。

您有自己的 string.h 文件,由于包含路径,该文件正在被来自 winnt.h 的包含获取。

【讨论】:

谢谢,这就是问题所在。我希望 C++ 不容易出错,非常感谢你:))

以上是关于MinGW Windows.h 无法编译的主要内容,如果未能解决你的问题,请参考以下文章

Mingw中头文件"Windows.h"的问题

windoes cmake与nmake

vc写的dll被mingw的g++编译引用

使用 MinGW 编译 - 无法识别的命令行选项

没有“glu.h”和“windows.h”,GLFW 无法编译

使用 MinGW - Initgraph() 无法编译