Кроссплатформенная разработка Objective-C / C ++ - PullRequest
8 голосов
/ 14 мая 2009

Я работаю в команде разработчиков, один из нас работает специально под Windows, и я работаю в основном в Mac OS X. Мы хотим разрабатывать приложения на C для C ++ или Objective-C, однако я не являюсь действительно хорошо разбирается в кроссплатформенном проекте разработки.

Жизнеспособно ли работать в C ++ с использованием Mac OS X? Очевидно, они ориентированы на Objective-C, но есть ли такая же поддержка C ++. А как насчет кроссплатформенной разработки на этих языках? Я бы использовал что-то вроде boost и какую-то библиотеку пользовательского интерфейса.

Кто-нибудь имеет опыт разработки для нескольких платформ, но позволяет приложениям работать без необходимости использовать виртуальную машину?

РЕДАКТИРОВАТЬ : Есть много ответов, которые я хочу отметить как правильные. Похоже, что Qt - это путь для разработки на C ++. Скорее всего, это будет для * nix, OS X и Windows, так что это будет лучшим вариантом для нас лично. Если я смогу избежать написания Objective-C, так что команда будет придерживаться C ++, тогда все будет лучше. Если мне нужно написать GUI в Objective-C и смешать и сопоставить, это тоже не сильно беспокоит.

Ответы [ 5 ]

11 голосов
/ 14 мая 2009

Я работаю в софтверной компании, которая производит программное обеспечение для Mac OS X и Windows с использованием C ++, MFC и Objective-C.

Да, это определенно возможно.

Вероятно, вам будет лучше, если вы разработаете «ядро» приложения на C ++. В приложении MVC часть C ++ будет моделью и, возможно, контроллерами. Для кода, который взаимодействует с GUI и другими интерфейсами, специфичными для ОС, вы должны использовать нативные API: Objective-C в Mac OS X и C # в Windows XP.

Хорошая особенность Mac заключается в том, что вы можете компилировать C ++ и Objective-C вместе. Вы даже можете иметь Objective-C ++, где C ++ и Objective-C компилируются в одном модуле компиляции. К сожалению, вы не можете сделать это с C # (есть что-то, называемое Managed C ++, это другой зверь).

Я бы избегал кроссплатформенных фреймворков, таких как Qt и wxWidgets. Они оба позволяют разрабатывать кроссплатформенные приложения, но внешний вид таких приложений не соответствует норме. Однако я лучше знаком с wxWidgets, его дизайн в значительной степени ориентирован на парадигму разработки приложений для Windows MFC.

Редактировать 14 мая 2009 г., 9:44 EST: Если Qt теперь позволяет true выглядеть и чувствовать нативную платформу, это может быть хорошим вариантом. Я не смотрел на последнее предложение, так что вы можете посмотреть на эту платформу, прежде чем разрабатывать свою собственную. Это решение должно быть принято после изучения результатов приложений и того, насколько вы довольны теми парадигмами дизайна, которые требуются Qt.

9 голосов
/ 14 мая 2009

Вы можете посмотреть на Qt . Я успешно использовал его в проектах Windows, Linux и Mac OSX.

4 голосов
/ 14 мая 2009

Я использую общую библиотеку, написанную на C или C ++ со всеми основными функциями вашего приложения.

Допустим, вы строите пасьянс. Таким образом, у вас будут базовые классы в чистой C ++ (в основном независимой от платформы) библиотеке.

  • CoreSolitaire

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

  • iSolitaire (Objective-C, MultiTouch на основе какао для iPhoneOS)
  • MacSolitaire (Objective-C, на основе какао для Mac OS X)
  • WinSolitaire (C ++, Win32 или C # для платформ Windows)
  • GSolitaire (C ++, GNome / GTK для Linux / Unix)

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

Сказав это, если вы собираетесь развернуть свой продукт внутри компании, в которой у вас есть полный контроль над средой развертывания, и вас не очень заботит поведение конечного продукта на разных платформах, вы могли бы определенно используйте общий API для всего (QT, wxWidgets или любой другой, с которым вы можете столкнуться).

1 голос
/ 14 мая 2009

Жизнеспособно ли работать в C ++ с использованием Mac OS X? Очевидно, они ориентированы на Objective-C, но есть ли такая же поддержка C ++.

Да, есть.

С C ++ в OS X вы можете делать практически все, что захотите - например, все, что вы можете делать с C ++ в Linux. Существует поддержка компилятора gcc для C ++, библиотек c ++ и т. Д. Xcode обеспечивает поддержку работы с C ++.

Вы даже можете смешивать c ++ с Objective-C с Objective-C ++ (заметьте, однако, что это не переносимо для работы с графическим интерфейсом).

А как насчет кроссплатформенной разработки на этих языках? Я бы использовал что-то вроде boost и какую-то библиотеку пользовательского интерфейса.

Я считаю, что ваша лучшая ставка - QT .

Это стабильная библиотека C ++, которая является кроссплатформенной (Windows, OSX, Linux и более), существует уже более десяти лет, хорошо поддерживается, и в ней написано много коммерческих приложений (Skype, Adobe Photoshop Album) и множество написанного с открытым исходным кодом (рабочий стол KDE для начинающих). Помимо графического интерфейса, он предоставляет гораздо больше (классы контейнеров, xml, подключение к базе данных и т. Д.).

Вы можете бесплатно разрабатывать как открытые, так и проприетарные приложения (с закрытым исходным кодом) с помощью последней версии QT, а библиотека была недавно куплена огромной международной корпорацией NOKIA, так что в ближайшее время она не исчезнет.

Помимо библиотеки, QT также поставляется с IDE и Visual Forms Designer (все бесплатно).

Другие кросс-платформенные библиотеки GUI для C ++ также существуют для OS X ( wxWidgets , gtkmm и др.).

0 голосов
/ 14 мая 2009

Есть ли у кого-нибудь опыт в разработка для нескольких платформ еще разрешить запуск приложений без необходимости ВМ?

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

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