我不想知道Windows和Linux中的API函数之间是否存在一对一的等价关系,也不想知道每个API函数.
我只想知道两件基本的事情:
我知道这不实用,但我想知道这种等价.
Bas*_*tch 14
您需要了解系统调用是什么.在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) are重要的系统调用(但大约有300个).
不要指望Linux上可以使用每个Windows功能(反之亦然).甚至不要想到这样的等价物.在Linux上获得不同的心态.(特别是,Linux和Windows上的流程非常不同).
不要忘记Linux是免费软件,您可以深入了解您在Linux上使用的每个功能的源代码.阅读,搜索,改进.....
首先阅读intro(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 运行应用程序不同——您将应用程序重新编译为 Linux 应用程序,只需使用 WineLib 共享库。不过,它看起来仍然像一个 Windows 应用程序,除非您随后修改了 UI 层。
正如答案中其他地方所说的那样,在 Linux 中没有真正直接等同于 Win32 - Win32 的不同位由不同的组件提供,有时您可以选择组件。这是可能的,因为 Win32 部分的某些等价物是在较低级别本地实现的——例如,Win32 提供 UI 组件,在 GTK、Qt 或任何数量的其他工具包(如 WineLib)中都可以使用它们的等价物,它们本身与 X 交互。就像您通常使用 Win32 中的组件而不是使用低级 API 调用绘制自己的组件一样,您通常会使用高级 UI 工具包中的组件而不是直接使用 X。
归档时间: |
|
查看次数: |
18263 次 |
最近记录: |