首页 > 解决方案 > C++ 打开一个没有库的窗口

问题描述

我是 C++ 新手,我想知道以供将来参考:

是否可以在没有任何库(如 Win32 API、GTK、QT 等)的情况下打开(跨平台兼容)窗口?

如果没有,有人可以解释为什么吗?

操作系统如何启动 GUI?即使它对汇编这样做,C++ 也可以做汇编可以做的事情(据我所知,如果我弄错了,请告诉我)。

我找到了一篇关于同一主题的帖子,但所有答案都说你不能避免 API,但他们没有提到为什么?

C++ 如何在没有 Win32 API 的情况下制作一个简单的窗口?

问题

  1. 是否可以在没有 API 调用或任何外部库的情况下创建 GUI?

  2. 如果不是,为什么以及操作系统如何启动 GUI?

  3. C++ 能做汇编能做的所有事情吗?(我真的不在乎,因为我想我可以在谷歌上找到答案,如果有人回答,我很感激)。

标签: c++user-interfaceassemblyoperating-systemwindow

解决方案


  1. 是否可以在没有 API 调用或任何外部库的情况下创建 GUI?

没有1

1:除非,例如,您正在编写自己的显示驱动程序并且可以直接访问视频硬件。

  1. 如果不是,为什么

每个操作系统处理 UI 编程的方式都不同。您必须使用运行程序的每个操作系统(即 Windows 上的 Win32 等)提供的 UI API。C++ 中没有内置通用 UI 框架,因此如果您想编写跨平台 UI,那么您将不得不使用第三方库(即 Qt、GTK 等),或者编写自己的封装每个操作系统的库- 将特定 API 转换为供您的代码使用的通用接口。

操作系统如何启动 GUI?

它没有。它只是执行你的程序,仅此而已。然后程序决定在运行时做什么。如果程序想要显示 GUI,那么它必须根据需要调用 OS 提供的 UI API。

  1. C++ 能做汇编能做的所有事情吗?

或多或少,是的2。C++ 是一种编译语言,它可以生成直接在 CPU 上运行的机器代码,就像 Assembly 一样。此外,许多 C++ 编译器实际上支持在 C++ 代码中直接嵌入实际汇编指令的能力。C++ 不使用必须在运行时翻译成机器代码的中间字节码,就像脚本/解释语言使用的那样。

2:并非所有CPU指令都可以直接执行,如果您的程序试图执行操作系统不希望您访问的指令(例如,直接访问硬件的指令),操作系统会进行干预。


推荐阅读