Информация о кроссплатформе - PullRequest
4 голосов
/ 29 июля 2011

Я посмотрел некоторые сведения о кроссплатформенном дизайне. Однако я не могу найти ответ на один мой вопрос.

То, что я хотел бы сделать, - это дизайн моего пользовательского интерфейса в Delphi (Windows) и X-Code (Mac) с основными внутренностями программы, являющимися независимым от ОС кодом C ++. Можно ли этого достичь? Я вижу много разговоров о кросс-платформенных компиляторах, фреймворках и инструментах с графическим интерфейсом, но я действительно хочу сохранить интерфейсы на 100% родными.

Пожалуйста, прости меня, если это абсурдный вопрос, но я относительно новичок в мире программирования и обучения. У моей компании есть обширный каталог приложений Delphi для окон, разработанных за последние 15 лет, и именно в Delphi я провел большую часть прошлого года.

Ответы [ 3 ]

4 голосов
/ 30 июля 2011

Если вам удобно работать с Object Pascal, взгляните на компилятор FreePascal и Lazarus, который является бесплатной кроссплатформенной IDE (доступна для Windows, Linux, Mac OS X).

3 голосов
/ 29 июля 2011

Вы должны взглянуть на wxWidgets http://www.wxwidgets.org/ для программирования на 100% родной.

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

Лично я бы больше не использовал C ++ для разработки пользовательского интерфейса.Но почему вы используете две IDE?Я предлагаю использовать более абстрактный язык (например, Java с Netbeans / Eclipse или даже лучше C # /. Net с VS / Blend) для этого UI / события / взаимодействия, сохраняющего только некоторые специфические части в собственном оптимизированном двоичном коде.

.Net / Mono может использовать разные наборы инструментов для стиля пользовательского интерфейса.Я думаю, что сегодня быть «родным» в контексте UX, а внешний вид - значит следовать конкретным системным рекомендациям.Это может быть достигнуто за счет просмотров и adpaters (см. Google для некоторых шаблонов дизайна).Внешний вид - это просто стиль приложения, и это тоже может быть нативный стиль.В WPF-мире дескрипторы используются только для окна хоста (и некоторые унаследованные причины совместимости с использованием форм Windows), но пользователь не почувствует разницы, если вы будете стилизовать свое приложение как прежние win-api-ones.

Qt также имеет независимый от платформы подход для мира C ++, но на самом деле не является нативным.Qt рисует свои собственные элементы управления с нативным внешним видом (при необходимости), а также предоставляет возможность использовать / совместно использовать одно определение пользовательского интерфейса для разных платформ.

1 голос
/ 30 июля 2011

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

Как уже говорили другие, C ++ не является единственным языком, не зависящим от ОС - фактически, большинство языков не зависят от ОС - что обычно не происходит (и не может быть) Независимость от ОС - это компилятор, библиотеки GUI и т. д. Pascal, C ++, Python, C #, Java и многие другие имеют SDK для различных ОС, большая часть которых имеет открытый исходный код.

Если по какой-то причине выустановлены на C ++, посмотрите Embarcedaro C ++ - клон Delphi, использующий C ++ вместо Object Pascal.

И, IMO, вы должны исследовать Qt: http://doc.qt.nokia.com/latest/index.html - Qt - это превосходная среда, не зависящая от ОС, которая включает в себя виджеты GUI, а также многие другие мощные библиотеки, которые в значительной степени охватываютвся сфера современных компьютерных вычислений.

Хотя c ++ является родным языком для разработки Qt, существует довольно много «языковых привязок», чтобы сделать возможным программирование на Qt с другими языками.(различные степени функциональности поддерживаются в зависимости от реализации привязки) Я понимаю, что существует привязка языка Object Pascal для Qt с использованием Lazarus - я еще не пробовал, но это звучит очень интересно.

Также, предостережение: отделяет ваш графический интерфейс от «базовых внутренностей» вашего приложения, так что его независимость от ОС может быть довольно сложной в сложных приложениях - я думаю, что хорошее место для начала - эточтение парадигмы MVC.

HTH

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