C++ 在没有库的情况下打开 window

C++ opening a window without libraries

我是C++新手,想了解一下以供日后参考:

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

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

OS 如何启动 GUI?即使它用汇编来做,C++ 也可以做汇编可以做的事情(据我所知,如果我弄错了请告诉我)。

我找到了一个关于相同主题的post,但所有的答案都说你无法避免API,但他们没有提到为什么?

C++ How do you make a simple window without the Win32 API?

问题

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

  2. 如果不是,为什么,OS 如何启动 GUI?

  3. C++能做汇编能做的一切吗? (我真的不关心这个,因为我想我可以在 Google 上找到答案,如果有人回答我很感激)。

  1. Is it possible to create a GUI without API calls, or any external libraries?

没有 1.

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

  1. If not, why

每个 OS 处理 UI 编程的方式不同。您必须使用您的程序运行所在的每个 OS 提供的 UI API(即 Windows 上的 Win32,等等)。 C++ 中没有内置通用的 UI 框架,所以如果你想编写一个跨平台 UI 那么你将不得不使用第 3 方库(即 Qt、GTK 等),或者编写您自己的,将每个 OS-specific API 包装到一个通用接口中供您的代码使用。

how does an OS launch the GUI?

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

  1. Can C++ do everything that assembly can do?

或多或少,是的2。 C++ 是一种编译语言,可生成直接在 CPU 上运行的机器码,与汇编语言一样。此外,许多 C++ 编译器实际上支持将实际的汇编指令直接嵌入到 C++ 代码中的能力。 C++ 不使用必须在运行时转换为机器代码的中间字节码,就像 scripting/interpreted 语言使用的那样。

2:不是所有的CPU指令都可以直接执行,如果你的程序试图执行OS不执行的指令,OS会介入'不希望您访问(例如,直接硬件访问的说明)。