Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Nebiros
33 / 33 / 0
Регистрация: 23.03.2010
Сообщений: 1,661
#1

Кроссплатформенное приложение - C++

01.08.2014, 18:35. Просмотров 2551. Ответов 13
Метки нет (Все метки)

Сразу хочу сказать что с С++ только знакомлюсь (есть опыт в web языках).
Вот к примеру мне нужно сделать такую вот задачку - по экрану передвигается объект с помощью стрелок и мыши, а так же есть пару полей ввода и кнопок.
Вопрос таков - как правильно создавать приложение так что бы оно работало на любой платформе?
Я конечно могу ошибаться, но если создать win32 приложение то оно только под windows будет работать, так же заметил что подключают openGL или directX для графического отображение (что тоже влияет на платформу).

В общем если коротко то - как правильно писать кроссплатформенные приложения с широким функционалом, или если можно статейку и т.д. ...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2014, 18:35     Кроссплатформенное приложение
Посмотрите здесь:

Разработать приложение приложение - C++
Задача: нужно написать приложение, которое будет регистрироваться на порту 80, и в случае прихода HTPP-запроса передавать фиксированную...

Кроссплатформенное приложение на C# - C#
Я когда-то выбрал C# для разработок. Теперь задумался, так как все готовые решения товарищи вокруг запускают в системе Linux. У меня...

Тренажёр по гипнозу. Кроссплатформенное приложение - C++
Упражнения из книги Лафоре есть на форуме в решённом виде>>>> После выполнения упражнений можно приступать к написанию программ! Весь...

Кроссплатформенное десктоп приложение на WPF - C# WPF
Вопрос к опытным товарищам. Допустим есть написаное на wpf приложение. Можно ли его развернуть под Mac и Linux? Может .net core +...

Кроссплатформенное приложение, использующее SQLite - Mono
Как сделать что бы приложение-бд работало и в windows и в linux(opensuse), c System.Data.SQLite не получается что-то: (в винде код...

Как в qt4 написать кроссплатформенное приложение - C++ Qt
Я написал программу в linux ubuntu, сохранил её, перезагружаю компьютер, а под windows уже не работает - простой файл без расширения. ...

Кроссплатформенное приложение под iPhone и iPad - Программирование iOS
Доброго времени суток! Возник вопрос насчет универсальности приложение iphone & ipad. Когда пишеш для 1ой платформи то все окей, не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
01.08.2014, 19:00     Кроссплатформенное приложение #2
Nebiros, рискую предположить, что вам нужен (нужна?) Qt.
Nebiros
33 / 33 / 0
Регистрация: 23.03.2010
Сообщений: 1,661
01.08.2014, 19:36  [ТС]     Кроссплатформенное приложение #3
Цитата Сообщение от CyberSolver Посмотреть сообщение
Nebiros, рискую предположить, что вам нужен (нужна?) Qt.
если я правильно понял то можно написать приложение под windows а потом с помощью qt скопмилировать для кросплатформерного применения . Просто в этой области я вообще новичок, и не могу понять с чего правильнее начать чтобы потом писать приложения и не приклеивать всякие костыли (или вообще переписывать код).
мне бы по понятнее бы где-то почитать как правильно и с чего начать....
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
01.08.2014, 19:40     Кроссплатформенное приложение #4
Nebiros, слово "кроссплатформенный" как бы намекает нам, что мы пишем не под винду или линукс Пишете (почти) обычный код на Си++, а потом компилируйте и запускайте хоть на маке, хоть на фряхе.
Цитата Сообщение от Nebiros Посмотреть сообщение
мне бы по понятнее бы где-то почитать как правильно и с чего начать....
Ну так поиск в помощь. Библия Qt - Саммерфилд, арианская ересь - Шлее. Qt вообще прекрасно документирована, если си++ знаете - ноль проблем. Какие-то конкретные вопросы - обращайтесь, вам помогут и скажут, что вы всё сделали неправильно.
DrOffset
6913 / 4106 / 933
Регистрация: 30.01.2014
Сообщений: 6,903
01.08.2014, 19:43     Кроссплатформенное приложение #5
Nebiros, кроме Qt еще есть wxWidgets (больше подойдет любителям MFC, т.к. заимствует некоторые подходы). Еще есть GTK+, написана на С.
Если отойти чуть в сторону от GUI фреймворков, то есть еще SDL. Также следует заметить, что упомянутый OpenGL тоже работает на множестве (на очень большом множестве) платформ.
А вообще средств много. На любой вкус.
druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 433
01.08.2014, 19:45     Кроссплатформенное приложение #6
Nebiros, если не знаете с чего начинать но качает "qt creator" с офф сайта и пытаетесь в нем хоть немного разобраться.
Ouroboros-SK
60 / 60 / 21
Регистрация: 08.09.2013
Сообщений: 187
Записей в блоге: 1
01.08.2014, 20:52     Кроссплатформенное приложение #7
Чистый C++\OpenGL наиболее кроссплатформеное решение.
Использование Qt\wxWidgets будет работать только там, где их библиотеки поддерживаются. В случае с Qt, например, можно программировать под Windows, Linux, Mac Os, Android and IOS, но для каждой платформы прийдется сделать несколько телодвижений в духе
C++
1
#ifdef WINDOWS
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2014, 21:03     Кроссплатформенное приложение #8
Цитата Сообщение от CyberSolver Посмотреть сообщение
Какие-то конкретные вопросы - обращайтесь
http://www.cyberforum.ru/qt/
Nebiros
33 / 33 / 0
Регистрация: 23.03.2010
Сообщений: 1,661
01.08.2014, 22:05  [ТС]     Кроссплатформенное приложение #9
Цитата Сообщение от Ouroboros-SK Посмотреть сообщение
Чистый C++\OpenGL наиболее кроссплатформеное решение.
вот я хотел бы понять как на чистом к примеру написать, вот если можно пример управления объектом (пусть кругом, квадратом...) и при этом не применяя какие либо библиотеки (то есть чтобы на любой платформе можно было запустить)...

P.s. - я говорил что си только начал изучать, а так php mysql и тд, и там аналогично не любил использовать фреймворки и библиотеки, все писал свое (как то привычка пошла такая у меня), и тут тоже интересует вариант как писать на чистом (при этом чтобы были все возможности) , только вот с чего начать, как бы попасть в правильное русло....
Бауман
Заблокирован
01.08.2014, 23:32     Кроссплатформенное приложение #10
вот я хотел бы понять как на чистом к примеру написать
Ну винда на чистом Си написана, считайте. Линь тоже.
Почему бы и Вам не написать свою мини-винду и свой мини-линь на чистом Си или С++ и применить в этой программе, только для того, чтобы не использовать никаких библиотек?

Понимаете, ОСи разные. На винде много такого, что нет на линуксе. И наоборот.
В кроссплатформенной библиотеке реализовано только то, что есть в обоих.
Поэтому она такая убогая.
Ouroboros-SK
60 / 60 / 21
Регистрация: 08.09.2013
Сообщений: 187
Записей в блоге: 1
01.08.2014, 23:40     Кроссплатформенное приложение #11
Как пример начала.
Создание двумерного OpenGL приложения в C++
Но так мало кто делает. В отличии от web-программирования, в прикладном, если не использовать никаких фреймворков, то можно с ума сойти)
DrOffset
6913 / 4106 / 933
Регистрация: 30.01.2014
Сообщений: 6,903
01.08.2014, 23:42     Кроссплатформенное приложение #12
Цитата Сообщение от Nebiros Посмотреть сообщение
P.s. - я говорил что си только начал изучать, а так php mysql и тд, и там аналогично не любил использовать фреймворки и библиотеки
Совсем на чистом не получится писать, т.к. многие средства, в частности рисование пресловутых кругов, зависят от окружения, ОС. Нет, ну конечно можно загрузиться в реальном режиме, писать прямо в видеопамять и т.п. но тогда твоя программа мало будет отличаться от ОС. Ну и кроссплатформенность на этом уровне обеспечить будет довольно непросто (ибо начинаем сильно зависеть от железа).
ОС позволяют сглаживать различия между железом, фреймворки и библиотеки, в частности, позволяют сглаживать различия между ОС. Так достигается кроссплатформенность. Точно так же работает и php, его интерпретатор сглаживает различия платформ, на которых он запускается, предоставляя программисту песочницу для работы.
Вообще, я тебя может сейчас удивлю, но кроссплатформенности в чистом виде не существует. Интерпретатор php в данном случае дает тот слой абстракции, который обеспечивает кроссплатформенность языка php, точно так же как компилятор С++ дает базовую кроссплатформенность языка С++, а GUI-фреймворк расширяет кроссплатформенные возможности (в пределах списка поддерживаемых платформ) - в стандарте С++ нет ничего про gui, поэтому без стороннего фреймворка тут не обойтись. Если для какой-то платформы нет компилятора С++, то программу на С++ для нее не скомпилировать. Если для какой-то платформы не портировали интерпретатор php, то скрипт на нем там тоже никак не заработает.

А вообще, если отвлечься от темы, то игнорирование существующего базиса инструментов и попытка воссоздать все собственными силами, нехорошая практика, хоть и полезная при обучении. Я к тому, что если программировать не только ради хобби, но еще и с целью заработать денег, то такой подход не позволит эффективно работать. Просто потому, что невозможно быть специалистом во всех областях, и самописные решения с большой долей вероятности будут проигрывать профессиональным инструментам (библиотекам). Ну и про время разработки всего "руками" не стоит забывать. Однако все вышесказанное отнюдь не означает, что не стоит вообще ничего писать самостоятельно.
Бауман
Заблокирован
01.08.2014, 23:46     Кроссплатформенное приложение #13
Вот вам иллюстрация для полного представления, почему кроссплатформенность - это всегда в известной мере убожество
Миниатюры
Кроссплатформенное приложение  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2014, 00:01     Кроссплатформенное приложение
Еще ссылки по теме:

Кроссплатформенное программирование в VS - .NET
Здравствуйте, народ. Подскажите пожалуйста каким образом можно создавать проекты в VS, которые одинаково хорошо бы работали и под Windows и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
6913 / 4106 / 933
Регистрация: 30.01.2014
Сообщений: 6,903
02.08.2014, 00:01     Кроссплатформенное приложение #14
Цитата Сообщение от Ouroboros-SK Посмотреть сообщение
В отличии от web-программирования, в прикладном, если не использовать никаких фреймворков, то можно с ума сойти)
Да в веб тоже самое. Вот если, скажем, ампутировать модуль поддержки mysql из php (а что, тоже вполне себе библиотека), то мы лишимся поддержки БД. Все остальные варианты эквивалентны для нарастающих требований: пока мы пишем что-то простое в веб, можем ограничиться стандартным комплектом и написать недостающее собственными силами. Как только у нас возникает проект уровня enterprise, ну вот для примера - сайт ebay. Я бы посмотрел как там без доп. инструментария можно было бы обойтись. Причем, я уверен, что команда ebay написала кучу кода самостоятельно, но по большому счету не важно кто пишет фреймворк, ты сам или кто-то еще. Важно есть ли на написание этого кода ресурсы (время, деньги, программисты, квалификация и т.п.). Вот у ebay они явно есть, поэтому они могут себе позволить создание каких-либо инструментов для себя своими силами (но и использование сторонних решений не стоит отметать - наверняка и это есть). А теперь нужно задать этот вопрос себе. Если ответ отрицательный, но самый разумный выбор - использование готового инструментария.

Добавлено через 6 минут
Цитата Сообщение от Бауман Посмотреть сообщение
Вот вам иллюстрация для полного представления, почему кроссплатформенность - это всегда в известной мере убожество
Также хорошо иллюстрирует почему кроссплатформенность подходит (нужна, целесообразна) только для определенного круга задач. Как раз те задачи, которые входят в пересечение множеств. Если мы выходим за рамки, то всегда лучше написать непортабельное, но максимально эффективно использующее возможности платформы решение.
Yandex
Объявления
02.08.2014, 00:01     Кроссплатформенное приложение
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru