使用 MinGW 进行 Windows 编程
Posted
技术标签:
【中文标题】使用 MinGW 进行 Windows 编程【英文标题】:Windows programming using MinGW 【发布时间】:2014-11-25 12:08:38 【问题描述】:首先,请原谅我对这些问题的无知,我已经进行了搜索,目前还没有找到任何全面的答案。
我计划学习如何为 Windows 进行开发,但是我非常喜欢 GNU 工具链,并且在我对底层基础知识感到更加熟悉之前,我真的不想继续使用像 Visual Studio 这样的大型环境。
据我了解,可以下载 Windows SDK,其中包含构建原生 Windows 应用程序所需的头文件和库。
SDK 真的只是库和头文件的集合吗?如果是这样,按照我的逻辑,应该可以将 MinGW 指向这些库/头文件,然后像往常一样简单地构建。
当我使用 Visual Studio 构建时,我看不到正在定义的预处理器指令、链接的内容等等,因为我仍在学习,我希望能够准确地知道发生了什么,最好是我必须手动定义,链接等。因此问题。
那么,我想知道的是:我的逻辑是否正确?
再次抱歉,如果问题是初级的,我仍在学习。
附:我打算在 Windows 环境中开发 Windows 应用程序,这不是关于交叉编译的问题。
谢谢!
【问题讨论】:
手动定义、链接等cl
是编译器,link
是链接器。走吧:]
所以从命令行我可以像 gcc -c 和 ld 一样简单地调用 cl 和链接?这会迫使我自己链接每个 WinAPI 库/定义所有预处理器宏吗? :) 基本上,我想拥有所有没有为我完成的好东西,这样我就可以了解真正发生的事情。
首先决定是否需要MinGW。已经不清楚了。不,MS 程序的命令行选项当然与 GCC 不完全相同(尽管有些相同)。并阐明你想用预处理器实现什么。您可以编写程序而无需定义任何内容。你想自己写标题吗?为什么?
实际的工具链与我无关。我只是希望能够有一个不太高级的工具来创建 Windows 程序。我想从命令行编译并且必须专门链接相关的库。 Visual Express 为我完成了这一切。我不想要那个。任何工具链都是公平的游戏!
我不想编写标题,我想对预处理器定义进行特定控制,例如确定 Unicode 等内容的定义。我想了解我需要链接哪些库而不是IDE 默默地为我做这件事。它与重新发明***无关,只是更接近底层实现的现实!
【参考方案1】:
MinGW 与官方 Windows SDK 不兼容,原因之一 因为 SDK 包含许多 VS 特定的东西(相对于 GCC 基础 在 MinGW 上)。 MinGW 已经改编了许多必要的文件,并且适用于许多程序 这就够了。
您不需要知道某些程序的 VS 项目设置; MinGW 仍然是 GCC 的核心,并被照此使用。如果可以编译 在 Linux 上使用 GCC 的程序,学习如何使用 MinGW 并不难。
如果您需要功能/结构/等。还不是其中的一部分, 除了自己进行适应之外,您很不走运, 视情况而定,可以是非常容易或非常困难之间的一切。 此外,正确的线程使用有点古怪(有一些“隐藏”的陷阱, 这在实际程序中可能会被忽视多年,但随后......)。
(虽然这对 VS 不利,但您将获得 C++11/14(而 VS 没有 甚至完成了 11,请参阅 link),在许多情况下进行了更好的优化等)
如果您要选择下载的具体内容,请查看 WinGW-W64 而不是 “原始”旧的。原来的项目有点停了,已经很差了 lib 支持与 W64 相比,没有 64 位编译器等。(不要误解 “W64”,也可以用于32位程序)
【讨论】:
not even close
有点夸张了吧?
嗯,“关闭”是什么意思当然是自以为是,但是blogs.msdn.com/b/vcblog/archive/2014/11/17/…尤其是表的后半部分,有很多“不”。至少“未完成”是一个事实,以这样的速度,它可能不会在 2020 年之前完成。
确切地说是MinGW-W64
,而不是WinGW-W64
。以上是关于使用 MinGW 进行 Windows 编程的主要内容,如果未能解决你的问题,请参考以下文章
[编译] 2minGW gcc在windows搭建编译win32程序环境
我在windows下安装了MinGW和msys,并在桌面上有了mingw shell的图标,请问我怎么才能应用vim来写程序呢