8
votes

Existe-t-il une API de base Linux analogue à Windows Winapi, en particulier pour la création d'applications de l'interface graphique?

Je passe de la programmation Windows (par programmation de Windows, je veux dire avec Windows API ) à la programmation Linux.

Pour la programmation Windows, l'option que nous avons est WIN32API (MFC n'est qu'une enveloppe C ++ pour la même).

Je veux savoir s'il y a quelque chose comme API Linux (équivalent à Winapi) exposé directement au programmeur? Où puis-je trouver la référence?

Avec ma petite connaissance de la bibliothèque POSIX, je vois qu'il enveloppe partie de Linux API . Mais Qu'en est-il de la création d'applications de l'interface graphique? POSIX n'offre pas cela. Je sais qu'il y a des tonnes de trousse à outils de widget tiers tels que GTK, QT, etc. Mais je ne veux pas utiliser les bibliothèques qui encapsulate l'API Linux. Je veux apprendre à utiliser l'API "Core Linux".

S'il y a quelque chose que je devrais savoir, veuillez en informer. Tout programmateur qui connaît la programmation Windows et Linux, faites-mapper les terminologies du monde Linux afin que je puisse passer rapidement sur.

Toute ressource (livres, tutoriels, Références ) sont très appréciés.


0 commentaires

7 Réponses :


10
votes

Je pense que vous recherchez quelque chose qui n'existe pas exactement. Contrairement à l'API Win32, il n'y a pas d'une "API Linux" pour faire des applications GUI. Le plus proche que vous puissiez obtenir est le x protocole lui-même, qui est un moyen assez bas de faire une interface graphique (C'est beaucoup plus détaillé et archaïque que Win32 GDI, par exemple). C'est pourquoi il existe des emballages tels que GTK et QT qui cachent les détails du protocole X.

Le protocole X est disponible sur C Programmes en utilisant XLIB . < / p>


5 commentaires

Ouais. Tout en utilisant l'API Win32 directement sur le code Les applications légères sont très réalisables, tout autant que vous obtiendrez du codage directement à XLIB est un code douloureux et des applications mal élevées. Bien que beaucoup de travail se rendent moins mal depuis l'accent sur le bureau Linux, il est encore assez mauvais. Éviter.


Intéressant, cela augmente une autre requête est Win32 GDI Partie de Windows Kernel? & is` x x protocole (XLIB) fait partie du noyau Linux?


@Claws: Win32 GDI ne fait pas partie du noyau Windows comme tel. De même, XLIB ne fait certainement pas partie du noyau Linux, XLIB est juste un tas de code que vous compilez et connectez-vous à votre application.


@Claws: Sous Windows, l'API native est l'interface réelle du système Windows NT. Sous Windows NT, l'API Win32 est juste une couche au-dessus de l'API native. Parce que le noyau NT n'a rien à voir avec l'interface graphique, l'API native n'inclut aucun service lié aux graphiques. Le sous-système Win32 est la passerelle de toutes les interfaces utilisateur dans Windows. Il est important de savoir que les composants pris en compte dans le sous-système WIN32 ne sont pas responsables de l'ensemble de l'API Win32, uniquement pour les portions utilisateur et GDI de CodeProject.com/kb/system/win32.aspx


@claws: être plus correct. Le sous-système Win32 (GDI et portion utilisateur de Win32 API) est l'équivalent de l'ensemble de la pile contenant X Windows System, Window Manager, Kit d'outils Widget. Pour plus d'informations, voir: superUserSer.com/questions/145031/...



5
votes

Ce que vous devez comprendre est que Linux est très nuant de ce qui est contenu à l'intérieur. L'API "CORE" Linux est POSIX et GLIBC. Linux n'est pas graphique par défaut, il n'y a donc pas de bibliothèque graphique principale. Vraiment, Windows pourrait être dépouillé pour ne pas avoir de graphiques également et ne disposer pas de parties de l'API Win32 comme GDI. Ceci vous devez comprendre. Linux est très léger par rapport aux fenêtres.

Pour Linux, il y a deux trousses graphiques principales, GTK et QT. Je préfère moi-même GTK, mais je rechercherais les deux. Notez également que GTK et QT existent pour Windows à, car ils ne sont que des wrappers. Si vous allez jeter un coup d'œil au code du protocole X pour dire xterm , vous verrez pourquoi personne ne tente de créer des applications graphiques en dessus.

Oh, aussi SDL est plutôt sympa, il est joli, mais c'est bien si vous avez juste besoin d'une tramebuffer pour une fenêtre. Il est portable entre Linux et Windows et très facile à apprendre. Mais il ne s'agira que jusqu'à présent ..


2 commentaires

glibc est une bibliothèque C standard C.Is non spécifique à Linux. Donc, l'API "Core Linux" est juste une bibliothèque de Posix? Je pensais que Posix n'arrive que sous-ensemble de l'API.


Eh bien, POSIX est fondamentalement une norme pour indiquer comment la bibliothèque standard (et quelques extensions) doit se comporter et quelles fonctions doivent exister pour être conformes. Bien sûr, il y a plus que la glibc et le posix, mais il n'y a pas tout ce que Beaucoup ... Les seules fonctions que je peux penser sont comme pour charger des modules de noyau et tels. Les sockets sont-ils couverts dans POSIX?



-1
votes

Il y a aussi les documents pour les deux différentes plates-formes de bureau: GNOME et KDE qui pourraient vous aider à descendre cette route.


0 commentaires

2
votes

Linux et gagnant ne sont pas aussi différents que ceux-ci.

sur les deux systèmes, il existe un noyau qui n'est pas graphique.

C'est juste que Microsoft ne documente pas ce noyau et publie une API qui fait référence à divers composants différents.

sur UNIX, c'est plus transparent. Il y a vraiment une API (non-GUI) du noyau et il est publié. Ensuite, il existe des services qui fonctionnent en haut de cette option, éventuellement, et leurs interfaces sont publiées sans tenter de les fusionner dans une couche imaginaire qui n'existe pas vraiment.

Donc, le niveau d'interface graphique le plus bas est un X Window System et il a un plus bas Bibliothèque de niveau appelé XLIB . Il y a diverses bibliothèques qui fonctionnent sur celui-ci, comme vous l'avez noté.


2 commentaires

Donc, 1. X Window System est l'un des "services" qui fonctionnent au-dessus de l'API du noyau? 2. POSIX La bibliothèque est également une telle chose qui est au-dessus de l'API du noyau. Droit? 3.est "API du noyau" que vous parlez de (dans Linux & Windows) différent de ce que je sais comme "appels système"? Quelle est la différence entre ces deux? 4. Si j'ai bien compris, Windows API est également une bibliothèque qui s'appuie sur le dessus des "API du noyau" non exposant. Droit?


Sous Windows, l'API native est l'interface réelle du système Windows NT. Sous Windows NT, l'API Win32 est juste une couche au-dessus de l'API native. Parce que le noyau NT n'a rien à voir avec l'interface graphique, l'API native n'inclut aucun service lié aux graphiques. Le sous-système Win32 est la passerelle de toutes les interfaces utilisateur dans Windows. Il est important de savoir que les composants pris en compte dans le sous-système Win32 ne sont pas responsables de l'ensemble de l'API Win32, uniquement pour les portions utilisateur et GDI de celui-ci codeproject.com/kb/system/win32.aspx



1
votes

Ceci va sonner insensé puisque vous posez des questions sur "sérieuses" telles que C ++ et C (et "API de base Linux"), mais vous voudrez peut-être envisager de construire dans quelque chose d'autre. Par exemple:

  • Java Swing (Beaucoup de gens l'aiment! D'autres la détestent et l'appelent obsolète)
  • Mono GTK # (C # ou VisualBasic ou quoi que ce soit que vous voulez, beaucoup de gens disent que c'est assez cool, mais ils ne sont pas si nombreux)
  • Adobe Air (ActionScript, vous pourriez la détester)
  • Titanium (totalement neuf et non prouvé, mais obtenir beaucoup de buzz dans le monde de l'iPhone, au moins)

    et de nombreuses autres possibilités, dont certaines vous permettent de travailler sur plusieurs plates-formes à la fois.

    Désolé si cette réponse n'est pas du tout ce que vous recherchez. Les réponses «réelles» sur Linux sont «Choisissez une boîte à outils», ce qui n'est également pas une réponse du tout :)


0 commentaires

0
votes

regarder Caire . Ce quelque chose d'approximativement similaire à GDI + et est sous le capot de certains des rares programmes d'interface graphique utilisables pour Linux I.e Firefox ou Eclipse (SWT). Il enveloppe la plupart des trucs linux nateux et anciens pour vous dans une API agréable qui fonctionne sur la plupart des installations Linux sans vous bloquer dans tout un sous-systèmes comme GTK ou QT.


0 commentaires

2
votes

Je serais fortement recommandé de regarder le Cadre ui QT / C ++ , il est sans doute la plus complète. Toolkit UI pour toute plate-forme.

Nous l'utilisons au travail Développer des applications multiples multiples qui fonctionnent sous Windows, OSX et Linux.

Il fonctionne également sur le système d'exploitation de téléphone intelligent de Nokia maemo qui a récemment été fusionné avec le système d'exploitation de Moblin Linux d'Intel, maintenant appelé meego.


0 commentaires