Существует ли Core Linux API, аналогичный Windows WINAPI, в частности, для создания приложений с графическим интерфейсом? - PullRequest
6 голосов
/ 17 февраля 2010

Я перехожу от программирования Windows (под программированием Windows я имею в виду использование Windows API) к программированию Linux.

Для программирования Windows у нас есть опция Win32API (MFC - просто оболочка C ++ для того же).

Я хочу знать, есть ли что-то вроде Linux API (эквивалентное WINAPI), которое предоставляется непосредственно программисту? Где я могу найти ссылку?

С моим небольшим знанием библиотеки POSIX я вижу, что она охватывает часть Linux API. Но как насчет создания приложений с графическим интерфейсом? POSIX этого не предлагает. Я знаю, что есть множество сторонних наборов инструментов Widget, таких как gtk, Qt и т. Д. Но я не хочу использовать библиотеки, которые инкапсулируют Linux API. Я хочу научиться использовать "Core Linux API".

Если есть что-то, что я должен знать, пожалуйста, сообщите. Любой программист, который знаком как с программированием для Windows, так и для Linux, пожалуйста, нанесите на карту терминологию мира Linux, чтобы я мог быстро двигаться дальше.

Любые ресурсы (книги, учебные пособия, ссылки ) высоко ценятся.

Ответы [ 7 ]

8 голосов
/ 17 февраля 2010

Я думаю, вы ищете что-то, чего точно не существует. В отличие от Win32 API, нет «Linux API» для создания приложений с графическим интерфейсом. Самое близкое, что вы можете получить, это сам протокол X , который представляет собой довольно низкоуровневый способ создания GUI (он гораздо более детальный и архаичный, чем Win32 GDI, например). Вот почему существуют такие оболочки, как GTK и Qt, которые скрывают детали протокола X.

Протокол X доступен для программ на C, использующих XLib .

3 голосов
/ 17 февраля 2010

То, что вы должны понимать, это то, что Linux очень огорчен тем, что в нем содержится. «Core» Linux API - это POSIX и glibc. Linux НЕ является графическим по умолчанию, поэтому нет графической библиотеки ядра. Действительно, Windows может быть урезана, чтобы не иметь графики, и, следовательно, не иметь таких частей Win32 API, как GDI. Это вы должны понимать. Linux очень легкий по сравнению с Windows.

Для Linux существует два основных графических инструментария, GTK и Qt. Я сам предпочитаю GTK, но я бы исследовал оба. Также обратите внимание, что GTK и Qt существуют для Windows, потому что они просто оболочки. Если вы посмотрите на код протокола X, скажем, xterm, вы поймете, почему никто не пытается на самом деле создавать графические приложения поверх него.

О, также SDL довольно хорош, он довольно прост, но хорошо, если вам просто нужен кадровый буфер для окна. Он переносим между Linux и Windows и очень прост в освоении. Но пока он будет растягиваться.

2 голосов
/ 17 февраля 2010

Я бы настоятельно рекомендовал взглянуть на QT / C ++ UI Framework , это, пожалуй, самый полный набор инструментов для пользовательского интерфейса для любой платформы.

Мы используем его при разработке кроссплатформенных приложений для Windows, OSX и Linux.

Он также работает на операционной системе смартфона Nokia Maemo , которая недавно была объединена с операционной системой Intel Moblin Linux, которая теперь называется MeeGo.

2 голосов
/ 17 февраля 2010

Linux и win не так отличаются, как кажется.

В обеих системах существует не графическое ядро.

Просто Microsoft не документирует это ядро ​​и публикует API, который ссылается на различные компоненты.

В Unix это более прозрачно. Там действительно (не GUI) API ядра, и он опубликован. Затем есть службы, которые работают поверх этого, по желанию, и их интерфейсы публикуются без попытки объединить их в воображаемый слой, который на самом деле не существует.

Итак, самый низкий уровень графического интерфейса - X Window System , и у него есть библиотека самого низкого уровня , называемая Xlib . Как вы уже заметили, поверх этой библиотеки работают различные библиотеки.

1 голос
/ 17 февраля 2010

Посмотрите на Каир . Это что-то похожее на GDI + и находится под капотом некоторых из немногих полезных программ с графическим интерфейсом для Linux, то есть Firefox или Eclipse (SWT). Он оборачивает большинство нахальных и древних вещей для вас в прекрасный API, который работает в большинстве установок Linux, не привязывая вас к целым подсистемам, таким как GTK или QT.

1 голос
/ 17 февраля 2010

Это будет звучать безумно, поскольку вы спрашиваете о «серьезных» вещах, таких как C ++ и C (и «core linux API»), но вы можете подумать о создании чего-то еще. Например:

  • Java Swing (многим это нравится! Другие ненавидят и называют это устаревшим)
  • Mono GTK # (C # или VisualBasic или что угодно, многие говорят, что это круто, но их не так много)
  • Adobe AIR (ActionScript, вы можете его ненавидеть)
  • Titanium (абсолютно новый и непроверенный, но получающий много шума в мире iPhone, по крайней мере)

И многие другие возможности, некоторые из которых позволяют работать сразу на нескольких платформах.

Извините, если этот ответ не совсем то, что вы ищете. «Реальные» ответы в Linux - это «выбрать инструментарий», что тоже совсем не ответ: :)

0 голосов
/ 17 февраля 2010

Также есть документы для двух разных настольных платформ: Gnome и KDE, которые помогут вам в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...