Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有类似于Windows WINAPI的核心Linux API,特别是用于创建GUI应用程序?_Linux_User Interface_Winapi - Fatal编程技术网

是否有类似于Windows WINAPI的核心Linux API,特别是用于创建GUI应用程序?

是否有类似于Windows WINAPI的核心Linux API,特别是用于创建GUI应用程序?,linux,user-interface,winapi,Linux,User Interface,Winapi,我正在从windows编程(我所说的windows编程是指使用WindowsAPI)转向Linux编程 对于编程窗口,我们拥有的选项是Win32 API(MFC只是一个C++包装器)。p> 我想知道是否有类似于linuxapi(相当于WINAPI)的东西直接向程序员公开?我在哪里可以找到推荐人 就我对POSIX库所知不多,我发现它是Linux API的一部分。但是创建GUI应用程序怎么样?POSIX不提供这一功能。我知道有很多第三方小部件工具包,如gtk、Qt等,但我不想使用封装Linux AP

我正在从windows编程(我所说的windows编程是指使用
WindowsAPI
)转向Linux编程

对于编程窗口,我们拥有的选项是Win32 API(MFC只是一个C++包装器)。p> 我想知道是否有类似于
linuxapi
(相当于WINAPI)的东西直接向程序员公开?我在哪里可以找到推荐人

就我对POSIX库所知不多,我发现它是Linux API的一部分。但是创建GUI应用程序怎么样?POSIX不提供这一功能。我知道有很多第三方小部件工具包,如gtk、Qt等,但我不想使用封装Linux API的库。我想学习使用“核心Linux API”

如果有什么我应该知道的,请告诉我。任何熟悉Windows和Linux编程的程序员,请映射Linux世界的术语,以便我可以快速前进


非常感谢您提供任何资源(书籍、教程、参考资料)

我想你在寻找一些不存在的东西。与Win32 API不同,没有用于执行GUI应用程序的“Linux API”。最接近的是GUI本身,这是一种相当低级的GUI方式(例如,它比Win32 GDI更详细、更古老)。这就是为什么存在诸如GTK和Qt之类的包装器来隐藏X协议的细节


X协议可供使用的C程序使用。

您必须了解的是,Linux对于其中包含的内容非常简单。“核心”Linux API是POSIX和glibc。Linux在默认情况下不是图形化的,因此没有核心图形库。实际上,Windows也可以精简为没有图形,因此没有像GDI这样的win32 API部分。这一点你必须理解。与Windows相比,Linux非常轻量级

对于Linux,有两个主要的图形工具包,GTK和Qt。我自己更喜欢GTK,但我会研究两者。还要注意的是,GTK和Qt的存在是为了让Windows运行,因为它们只是包装器。如果你去看看X协议代码,比如说
xterm
,你就会明白为什么没有人试图在它上面创建图形应用程序


哦,SDL也很好,它很简单,但是如果你只需要一个窗口的帧缓冲区,它就很好了。它可以在Linux和Windows之间移植,并且非常容易学习。但它只会延伸到这一步

还有两种不同桌面平台的文档:Gnome和KDE,它们可能会帮助您实现这一目标。

Linux和win并不像看上去那么不同

在这两个系统上都存在一个非图形化的内核

只是微软没有记录这个内核,而是发布了一个引用各种不同组件的API

在Unix上,它更透明。确实有一个(非GUI)内核API,它已经发布了。然后,有一些服务可以在上面运行,它们的接口也可以发布,而不需要尝试将它们合并到一个不存在的虚拟层中


因此,最低的GUI级别是,它有一个最低级别的库。正如你已经注意到的,有很多库在这个上面运行。

< P>这听起来很疯狂,因为你问的是“严肃”的东西,比如C++和C(以及“核心Linux API”),但是你可能想考虑在其他方面建立。例如:

  • Java Swing(许多人喜欢它!其他人讨厌它并称之为过时)
  • Mono GTK#(C#或VisualBasic或任何你想要的,很多人说它很酷,但他们不是很多人)
  • AdobeAIR(ActionScript,你可能讨厌它)
  • 钛合金(全新且未经验证,但至少在iPhone世界里得到了广泛的关注)
还有许多其他的可能性,其中一些可以让你同时在多个平台上工作


很抱歉,如果这个答案根本不是你想要的。Linux上的“真正”答案是“挑选一个工具包”,这也不是答案:)

看看。这与GDI+大致相似,并且是Linux上少数几个可用GUI程序的保护之下,如Firefox或Eclipse(SWT)。它将大多数natsy和古老的Linux内容封装到一个很好的API中,在大多数Linux安装上运行,而不会将您锁定在GTK或QT等整个子系统中。

我强烈建议您查看,它可以说是任何平台上最全面的UI工具包

我们正在使用它开发在windows、osx和linux上运行的跨平台应用程序


它还运行在诺基亚的智能手机操作系统上,该操作系统最近与英特尔的Moblin Linux操作系统(现在称为MeeGo)合并。

Yep。虽然直接使用Win32 API编写轻量级应用程序是非常可行的,但直接编写到XLib所得到的只是痛苦的代码和糟糕的应用程序。虽然自从强调桌面Linux以来,在减少X的危害方面做了很多工作,但它仍然相当糟糕。避免。有趣的是,另一个查询是Windows内核的Win32 GDI部分吗?&是Linux内核的'X协议(Xlib)部分吗?@claws:Win32 GDI本身不是Windows内核的一部分。类似地,Xlib绝对不是Linux内核的一部分,Xlib只是一组代码,您可以编译并链接到应用程序中。@claws:在Windows中,本机API是Windows NT系统的实际接口。在Windows NT中,Win32 API只是本机API之上的一层。因为NT内核与GUI无关,所以本机API不包含任何与图形相关的服务。Win32子系统是Windows中所有用户界面的网关。必须知道Win32子系统中考虑的组件不负责t