2009-07-31 3 views
4

Я хочу научиться C++ работать на разных платформах (в первую очередь Linux и Windows). Я столкнулся с несколькими решениями, такими как библиотека Boost C++, Qt toolkit и т. Д., Которые можно использовать для написания программ, которые будут компилироваться на обеих платформах.C++ API для многоплатформенной разработки

Я хочу узнать из сообщества, какую библиотеку вы хотели бы использовать, и если бы кто-либо из вас раньше имел опыт работы с этим многоплатформенным программированием.

ответ

4

Это зависит от того, что вы собираетесь делать. Если вам нужно написать строго утилиту командной строки для обработки текста, Qt или wxWidgets может быть неуместным. Что такое ваше поле приложения?

Научные вычисления - это моя область знаний. в которых эти большие интерфейсы многоплатформенные:

Параллельное программирование

Численные алгоритмы

файл Высокопроизводительный I/O

Визуализация

  • Visualization Toolkit
    • Если вы делаете работу а именно, графический интерфейс может быть большим.Попробуйте один из следующих интерфейсов мультиплатформенных:
  • Рамки плагин для параллельных приложений а именно:
+0

Спасибо за ваш список. – sul4bh

2

Вы не указали какой-либо partuclar тип библиотеки, но если вы просто хотите общую рекомендацию, я должен сказать, что WxWidgets является отличным кросс-платформенная библиотека GUI.

У этого есть некоторые замечательные функции, такие как рендеринг GUI в собственном внешнем виде и ощущении операционной системы, на которой он работает, и не особенно сложно изучить. Он предлагает один API для написания графического интерфейса через Win/Mac/Linux, а также другие, такие как WinCE.

Я очень рекомендую его для работы с кросс-платформенным графическим интерфейсом.

Проверьте это в http://www.wxwidgets.org/

+0

+1 Внешний вид и характер важны и часто пропускаются инструментами GUI. –

2

Я очень рекомендую Qt, если вы делаете какой-либо графический интерфейс работы; это даже очень полезно, если вы этого не сделаете, так как у него хорошо продуманные сетевые/базы данных/контейнеры/etc API. Это очень хорошо разработанный API и очень прост в использовании.

16

Использовать Qt и BOOST C++ Libraries. Они являются бесплатными и очень качественными. Кроме того, по крайней мере для меня лично, я нашел Qt более простым, простым в освоении и проще, чем wxWidgets.

+0

Действительно. Я пробовал wxWidgets, и это очень уродливо :( – GManNickG

+0

+1. Я тоже переключился с wxWidgets на Qt. –

+0

+1. Qt превосходно. – Rob

2

Ядро C++ standard и STL уже почти перекрестная платформа. Обычно это только GUI и аппаратный доступ, требующий библиотек.

Я использовал GTK + в качестве инструментария GUI, и это тоже очень хорошо, хотя вам нужно установить glib и некоторые другие вещи в окнах.

RtAudio отлично подходит для кросс-платформенных аудиовходов/выходов.

Низкоуровневые сетевые файлы/сокеты в основном одинаковы между окнами и Linux, вы можете написать очень легкий слой для обработки любых различий. У меня нет опыта работы с сетевыми библиотеками более высокого уровня.

Мне также нравится SFML (простая быстрая медиа-библиотека) для кросс-платформенного 2-го типа графического типа. Это очень хорошо.


Я хотел бы предложить, однако, что если вы просто обучения C++, то вы, вероятно, лучше не глядя на НЧ (или даже любой из этих наборов инструментов) до тех пор, пока вы получили вашу голову вокруг основ - например, написав пару базовых консольных приложений.

Если вы хотите изучить C++ только так, вы можете сделать многоплатформенный dev, имейте в виду, что есть много других языков и связанных с ними наборов инструментов, которые могут быть более подходящими, в зависимости от приложения, которое вы пишете.

Не зная тип приложения, которое вы планируете разрабатывать, трудно сказать, является ли C++ (или C или Python или что-то еще) лучшей идеей. Лично я обычно обращаюсь к Python + PyGTK для кроссплатформенных графических приложений и C# для приложений только для Windows. Вы всегда можете подключить C/C++ для замены любых компонентов, которые работают слишком медленно.

+0

Я действительно только начал изучать C++. Моя цель - уметь для написания многоплатформенного приложения.Я просто пытаюсь узнать, какие инструменты доступны и как люди делают это. Благодарю. – sul4bh

1

Как и другие плакаты, я бы порекомендовал Qt и Boost для кросс-платформенной разработки. Я пробовал gtkmm, который является тонкой оболочкой C++ вокруг GTK +, но не был удовлетворен этим отчасти потому, что это не родная библиотека C++, а документация плохая по сравнению с Qt. Кроме того, Qt поставляется с очень приятной средой разработки, в том числе простой для записи альтернативный qmake и дизайнер gui.

1

Я собираюсь сделать кросс-платформенную разработку на C++, и вы не хотите поддерживать разные системы сборки (Make-файлы, проекты Visual Studio и т. Д.) Есть несколько инструментов, которые могут вам помочь.

Тот, который я лично использую, является CMake. Он поддерживает Linux и Unix Flavors, Windows и Mac/OS. Фактически несколько проектов с открытым исходным кодом, например KDE, используют его. Но есть и другие варианты, например, Scons.

1

Стандартные программы на С ++ будут компилироваться и переноситься, т. Е. Работать на большом количестве платформ. Чтобы быть уверенным, что вы держите код в чистоте, лучше всего получить несколько разных компиляторов и проверить свой код со всеми из них при одновременном обеспечении полного стандартного соответствия (например, с вариантами -std= для g++) и без предупреждения код (с такими параметрами, как -W -Wall -Werror для g++, который испускает ошибки вместо предупреждений). Точный выбор составителей до вас, но если вы в основном обучение, я советую с помощью:

  • g++ (бесплатно, с открытым исходным кодом)
  • компилятор Intel (бесплатно для некоммерческого использования на Linux)
  • может быть MSVC++

Кроме того, если вы действительно должны использовать от компилятора или целевого конкретного кода в своих проектах, убедитесь, абстрагировать, так что это все собрались в одном месте, и скрыта от остальной части коды ,

Теперь, если вы хотите использовать больше, чем STL, вам нужно выбрать свои библиотеки, рассматривая диапазон компиляторов и платформ, на которые они протестированы (и, если documentaiton не заявляет об этом, это плохой знак). Детальный выбор зависит от того, что именно вы хотите сделать, но Boost (как надежная, широкая библиотека для многих распространенных проблем) и Qt (последняя версия, для программирования графического интерфейса) - хороший выбор. Для численного, научного программирования BLAS/LAPACK (и/или их параллельные версии, BLACS и Scalapack) очень широко используются непосредственно или через классы C++ с оболочкой, которые можно найти в Boost (для BLAS); также часто нужна хорошая библиотека FFT (FFTW хорош, если ее лицензия GPL не является для вас обузой).

Смежные вопросы