GCC with Windows SDK?

GCC with Windows SDK?

本文关键字:SDK Windows with GCC      更新时间:2023-10-16

我得到了很多关于如何使用GCC构建本机Windows应用程序的相互矛盾的信息。

基本上,我想从一个熟悉的角度学习Windows编程。我想了解哪些库需要包含在哪些标题等中的细节。所以我可以对底层实现有所了解。我觉得视觉工作室通过有时似乎不透明的构建过程带走了很多东西(当我包含标题时,库会自动链接,这让我很沮丧,让我很难看到什么在做什么)

编辑:感谢Ben和Serge指出最后陈述的虚假性。VS 不会根据包含的标头自动包含库,而是链接许多默认库,而不管包含哪些标头,但是只有翻译单元所需的函数/类等才会最终出现在最终可执行文件中。

有没有一种方法可以让我使用 Windows API(即不是 libc)但使用不太"用户友好"的环境来为 Windows 开发?

我更愿意坚持使用GCC(MinGW等),但我对其他工具链持开放态度。我只是想了解一下视觉工作室的臃肿和抽象。

我可以只下载Windows SDK并开始使用MinGW构建吗?如果没有,我在哪里可以获得本机开发所需的标头和库?它会使用 minGW 之类的东西正确编译吗?

很多问题!

谢谢!

摘要:请参阅Serge非常有用的答案!

感谢大家提供的信息!

如果要执行命令行构建,没有什么可以阻止您编写自己的 NMake 文件,该文件描述使用哪些标志编译哪些文件以及如何将它们全部链接到自己的可执行文件中。

窗口编译器是cl.exe。

窗口链接器是链接.exe

Visual Studio

(或其免费变体Visual Studio Express)不会自动找到与标头关联的库。默认情况下,它使用一组标准库。但我可以告诉你,一旦你使用较少的标准API,你将不得不同时声明头和库。如果您更深入地查看项目属性,您会发现编译和链接阶段的确切命令行。

您可以使用MSVC工具或MingW工具,但切勿尝试混合它们!对象格式彼此不兼容

编辑:

我现在将在我所知道的版本(MSVC Express 2008)中描述它是如何工作的。该项目的配置可在 Project / Properties 下找到。您通常在这里找到 2 个配置(DebugRelease ),但始终可以通过 Configuration Manager 添加新的特殊构建配置。您可以选择要处理的配置(或选择All configurations以在任何地方应用更改。

Configuration properties下,您可以找到(除其他外)C/C++(编译阶段)和Linker(链接阶段)的项目,其中包含用于调整几乎所有内容的菜单。最后一个菜单始终Command line,并提供将使用的实际命令行。

如果您使用其他版本,您的里程可能会有所不同,但我总是能够在旧 MSVC 版本的 Project / Properties 下找到配置......

编辑 2 :

关于默认库的列表,链接器独立于您可能在不同源中使用或不使用的标头使用它们。但由于它们是而不是对象模块,因此只有程序直接或间接实际需要的对象模块(包含在库中)才会以可执行文件结尾。我几乎从未使用过"忽略默认库"选项。主要是当我想确保我没有使用系统库来减小可执行文件的大小时,对于一个非常特殊的用例。