C++ 使用MinGW进行Windows编程

C++ 使用MinGW进行Windows编程,c++,visual-studio,gcc,C++,Visual Studio,Gcc,首先,请原谅我对这些问题的无知,我已经做了一次搜索,到目前为止还没有找到任何全面的答案 我计划学习如何为Windows开发,但是我非常喜欢GNU工具链,在我对底层的基础知识感到更舒服之前,我并不想使用像VisualStudio这样的大型环境 据我所知,可以下载Windows SDK,其中包含构建本机Windows应用程序所需的头文件和库 SDK实际上只是库和头的集合吗?如果是这样的话,按照我的逻辑,应该可以将MinGW指向这些库/头,并按照正常方式进行构建 当我使用Visual Studio构建

首先,请原谅我对这些问题的无知,我已经做了一次搜索,到目前为止还没有找到任何全面的答案

我计划学习如何为Windows开发,但是我非常喜欢GNU工具链,在我对底层的基础知识感到更舒服之前,我并不想使用像VisualStudio这样的大型环境

据我所知,可以下载Windows SDK,其中包含构建本机Windows应用程序所需的头文件和库

SDK实际上只是库和头的集合吗?如果是这样的话,按照我的逻辑,应该可以将MinGW指向这些库/头,并按照正常方式进行构建

当我使用Visual Studio构建时,我看不到定义了什么预处理器指令,链接了什么等等,因为我还在学习,我希望能够确切地知道发生了什么,最好是我必须手动定义,链接等等。因此,问题就来了

那么,我想知道的是:我的逻辑正确吗

再次表示歉意,如果问题是初步的,我仍在学习

另外,我计划在Windows环境中开发Windows应用程序,这不是交叉编译的问题


谢谢

MinGW与官方Windows SDK不兼容,原因之一是
因为SDK包含许多特定于VS的东西(与GCC基础相反
在MinGW上)。MinGW已改编了许多必要的文件,并适用于许多程序
这就够了

您不需要知道某些程序的VS项目设置
MinGW仍然是核心中的GCC,因此被使用。如果您可以编译
在linux上使用GCC的程序,学习如何使用MinGW并不难

如果您需要尚未成为其一部分的功能/结构等,
你运气不好,除了自己做改编,这
可以是非常简单的,也可以是非常困难的,这取决于具体情况。
此外,正确使用线程有点奇怪(有一些“隐藏的”陷阱,
这可能会在实际的项目中被忽视很多年,但之后

(虽然这是VS的一个缺点,但您将获得C++11/14(而VS没有
即使完成了11,请参见),在许多情况下,优化效果更好

如果您选择下载什么,请查看WinGW-W64而不是
“原来的”旧的。原来的项目有些停顿,有点差
与W64相比,lib支持,没有64位编译器等(请不要误解

“W64”,也可用于32位程序)

手动定义,link etc
cl
是编译器,
link
是链接器。那么从命令行我可以像调用gcc-c和ld一样简单地调用cl和link?这会迫使我自己链接每个WinAPI库/定义所有预处理器宏吗?:)基本上,我希望所有美好的事情都不要为我而做,这样我才能了解真正发生的事情。首先,决定你是否想要MinGW。现在已经不清楚了。当然,MS程序的命令行选项与GCC程序的命令行选项并不完全相同(尽管有些命令行选项是相同的)。并阐明您希望通过预处理器实现什么。您可以编写程序而无需定义任何内容。你想自己写标题吗?为什么?实际的工具链与我无关。我只是希望能够有一个不那么高级的工具来创建windows程序。我想从cmdline编译,并且必须专门链接相关库。Visual Express为我完成了所有这些。我不想那样。任何工具链都是公平的游戏!我不想写标题,我想对预处理器定义有具体的控制,比如那些决定Unicode等的定义,我想知道我需要链接哪些库,而不是IDE默默地为我这样做。这与重新发明轮子无关,只是越来越接近底层实现的现实<代码>甚至不接近这有点夸张,不是吗?当然,“接近”的意思是自以为是的,但特别是在表格的下半部分,有很多“不”。至少“未完成”是事实,以这样的速度,它可能不会在2020年之前完成。准确地说,它是
MinGW-W64
,而不是
WinGW-W64