C++ 为什么win32 API不可移植?

C++ 为什么win32 API不可移植?,c++,c,C++,C,我知道win32 API是用C语言编写的,也知道为什么Qt是可移植的 有人能给我解释一下吗?因为WinAPI不是为可移植而设计的,因为它只针对Windows操作系统,而QT框架则针对多个操作系统。WinAPI是用C编写的这一事实没有什么区别。windows API是可移植的,因为它与处理器无关。事实上,多年来,它已经在许多非英特尔处理器上运行。它在操作系统不可知论的意义上是不可移植的;尽管如此,微软并不是API的唯一实现。wine项目在为其他平台重新实现API方面做了可靠的工作,windows二

我知道win32 API是用C语言编写的,也知道为什么Qt是可移植的


有人能给我解释一下吗?

因为WinAPI不是为可移植而设计的,因为它只针对Windows操作系统,而QT框架则针对多个操作系统。WinAPI是用C编写的这一事实没有什么区别。

windows API是可移植的,因为它与处理器无关。事实上,多年来,它已经在许多非英特尔处理器上运行。它在操作系统不可知论的意义上是不可移植的;尽管如此,微软并不是API的唯一实现。wine项目在为其他平台重新实现API方面做了可靠的工作,windows二进制文件将运行,至少在与二进制文件匹配的处理器上运行。

为什么是一个相当开放的问题;但我的看法是:

Win32 API由微软公司生产;由于商业原因,它不能随身携带

QT是开源的;其创建的唯一目的是便于携带

奖金:
X11是开源的;创建该窗口的想法是,显示图像的机器可能不是运行想要该窗口的程序的机器。这使得它天生就不可移植到其他不支持windows的API中。WinAPI针对C的事实没有什么区别

仅仅因为语言是跨平台的,这并不意味着库,特别是那些不在标准库中的WinAPI库是相同的

它只是一个与显卡/处理器交互的库,用于在非常低的级别上创建GUI。在这一点上,它是如此低的级别,进程更多地依赖于内存位置或特定于处理器的操作。也就是说,特定于操作系统的某些内存位置将引用屏幕上的像素


Win32API的构建使得它只知道使用Windows操作系统的计算机的任务,库(如QT)仍然不是真正的跨平台,它们只是构建为包含它所涵盖的每个操作系统所需的所有相关操作

因为Win32 API顾名思义是针对Windows的。虽然Qt在设计上要求是可移植的。Win32 api特定于windows操作系统,这与其他操作系统不同。wine的目标是在非windows系统上实现winapi的使用。猜猜Windows上的QT调用什么来进行本机屏幕绘制。