为什么win32 API不可移植?

时间:2018-01-17 16:53:00

标签: c++ c

我知道win32 API是用C语言编写的,也是Qt可移植的原因吗?

有人可以向我解释一下吗?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

Windows API在处理器无关的意义上是可移植的(事实上,多年来它已在许多非英特尔处理器上运行)。在OS不可知的意义上它不可移植;虽然微软并不是唯一的API实现。葡萄酒项目为其他平台重新实现API做了可靠的工作,以至于windows二进制文件将运行,至少在与二进制文件匹配的处理器上运行。

答案 2 :(得分:2)

WinAPI针对C的事实没有任何区别。

仅仅因为该语言是跨平台的,它并不意味着库(特别是像WinAPI那样不是在标准库中的那些)是相同的。

它只是一个与视频卡/处理器交互的库,可以在非常低级别上创建GUI。此时它的级别太低,进程更多地取决于内存位置或处理器特定操作。 IE表示某些内存位置(特定于操作系统)将引用屏幕上的像素等。

Win32API已经构建,只有“知道”具有Windows操作系统的计算机的任务,像QT这样的库,再次仍然不是真正的“跨平台”它们刚刚构建包括其涵盖的每个操作系统所需的所有相关操作。

答案 3 :(得分:0)

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

Win32 API由microsoft制作;因商业原因不能携带。

QT是开源的;这是为了便于携带而创建的。

加成: X11是开源的;这是因为显示图像的机器可能不是运行想要窗口的程序的机器。这使得它本身不能移植到其他没有的API(例如windows)