Linux中的Win32 API相当于什么?

我不想知道在windows和linux的API函数之间是否有一对一的等价关系,也不想知道每个API函数。

我只想知道这两个基本的东西:

  1. 我想了解为什么Qt平台是独立的
  2. 我想知道我应该在linux中使用什么API来移植使用Win32 API编程的应用程序,或者换句话说,在Win32 API级别。

我知道这是不实际的,但我想知道这种等同性。

Solutions Collecting From Web of "Linux中的Win32 API相当于什么?"

你需要了解系统调用是什么。 在Linux上,它们是最低的用户空间 API(相比之下, Win32 API可能将真正的内核系统调用与一些库函数混合在一起,而libc在Linux上也是如此)。 fork(2) , execve(2) , open(2) , pipe(2) , mmap(2) , read(2) , poll(2) , close(2) , dup2(2) , sigaction(2)重要的系统调用(但其中大约有300个)。

不要指望每个Windows功能都可以在Linux上使用(反之亦然)。 甚至不要想到这样的等价物。 在Linux上获得不同的心态。 (特别是在Linux和Windows上进程是非常不同的)。

不要忘记,Linux是免费软件 ,您可以深入了解您在Linux上使用的每个功能的源代码。 阅读,搜索,改善…..

首先阅读介绍(2)手册页,以及其他几个手册页(特别是系统调用(2) , 介绍(3)等)。 另请阅读高级Linux编程和高级Unix编程 。

一些图书馆试图分解并为Posix(例如Linux)和Windows提供一个共同的抽象。 特别是Qt (也是Gtk)。

如果您对图形界面感兴趣,请了解X11的重要作用(请注意,X11服务器距离屏幕和键盘最近,大多数图形应用程序都是X11客户端)。 在2016年,X11趋向于被Wayland所取代(但是如果您使用Qt或GTK编码,您将不会注意到实现“细节” – 一个非常重要的细节)

如果您只使用Qt调用(除了特定于Linux或Windows的文档)编写应用程序,那么除了标准的C ++函数之外,它应该可以从Linux移植到Windows,反之亦然。

如果你想移植使用Win32调用的应用程序,最好的办法可能是使用WineLib 。 这使用了基于Wine的库,但与使用Wine运行应用程序并不相同 – 只需使用WineLib共享库,即可将应用程序重新编译为Linux应用程序。 它仍然看起来像一个Windows应用程序,除非你修改UI层。

正如答案中的其他地方所说,在Linux中没有真正的直接等价于Win32的 – Win32的不同位是由不同的组件提供的,有时你可以选择一些组件。 这是可能的,因为Win32的一些等价的部分本质上是在较低的层次上实现的 – 例如,Win32提供了UI组件,相当于GTK,Qt或其他任何工具包(比如WineLib)与X进行交互。就像通常使用Win32的组件一样,而不是使用较低级别的API调用来绘制自己的组件,所以通常使用高级UI工具包中的组件,而不是直接使用X.