С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

В общем если коротко то - как правильно писать кроссплатформенные приложения с широким функционалом, или если можно статейку и т.д. ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2014, 18:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кроссплатформенное приложение (C++):

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

консольное приложение (при запуске приложение открывалось на весь экран) - C++
Как сделать, чтобы при запуске приложение открывалось на весь экран?

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

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

Кроссплатформенное приложение Linux, Windows - Java
Добрый день уважаемые гости и жители форума) Подскажите пожалуйста, нужно написать декстопное приложение на яве с GUI. Подскажите может...

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

13
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 733
Записей в блоге: 1
01.08.2014, 19:00 #2
Nebiros, рискую предположить, что вам нужен (нужна?) Qt.
0
Nebiros
33 / 33 / 0
Регистрация: 23.03.2010
Сообщений: 1,764
01.08.2014, 19:36  [ТС] #3
Цитата Сообщение от CyberSolver Посмотреть сообщение
Nebiros, рискую предположить, что вам нужен (нужна?) Qt.
если я правильно понял то можно написать приложение под windows а потом с помощью qt скопмилировать для кросплатформерного применения . Просто в этой области я вообще новичок, и не могу понять с чего правильнее начать чтобы потом писать приложения и не приклеивать всякие костыли (или вообще переписывать код).
мне бы по понятнее бы где-то почитать как правильно и с чего начать....
0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 733
Записей в блоге: 1
01.08.2014, 19:40 #4
Nebiros, слово "кроссплатформенный" как бы намекает нам, что мы пишем не под винду или линукс Пишете (почти) обычный код на Си++, а потом компилируйте и запускайте хоть на маке, хоть на фряхе.
Цитата Сообщение от Nebiros Посмотреть сообщение
мне бы по понятнее бы где-то почитать как правильно и с чего начать....
Ну так поиск в помощь. Библия Qt - Саммерфилд, арианская ересь - Шлее. Qt вообще прекрасно документирована, если си++ знаете - ноль проблем. Какие-то конкретные вопросы - обращайтесь, вам помогут и скажут, что вы всё сделали неправильно.
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
01.08.2014, 19:43 #5
Nebiros, кроме Qt еще есть wxWidgets (больше подойдет любителям MFC, т.к. заимствует некоторые подходы). Еще есть GTK+, написана на С.
Если отойти чуть в сторону от GUI фреймворков, то есть еще SDL. Также следует заметить, что упомянутый OpenGL тоже работает на множестве (на очень большом множестве) платформ.
А вообще средств много. На любой вкус.
0
druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 440
01.08.2014, 19:45 #6
Nebiros, если не знаете с чего начинать но качает "qt creator" с офф сайта и пытаетесь в нем хоть немного разобраться.
0
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
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2014, 21:03 #8
Цитата Сообщение от CyberSolver Посмотреть сообщение
Какие-то конкретные вопросы - обращайтесь
http://www.cyberforum.ru/qt/
0
Nebiros
33 / 33 / 0
Регистрация: 23.03.2010
Сообщений: 1,764
01.08.2014, 22:05  [ТС] #9
Цитата Сообщение от Ouroboros-SK Посмотреть сообщение
Чистый C++\OpenGL наиболее кроссплатформеное решение.
вот я хотел бы понять как на чистом к примеру написать, вот если можно пример управления объектом (пусть кругом, квадратом...) и при этом не применяя какие либо библиотеки (то есть чтобы на любой платформе можно было запустить)...

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

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

А вообще, если отвлечься от темы, то игнорирование существующего базиса инструментов и попытка воссоздать все собственными силами, нехорошая практика, хоть и полезная при обучении. Я к тому, что если программировать не только ради хобби, но еще и с целью заработать денег, то такой подход не позволит эффективно работать. Просто потому, что невозможно быть специалистом во всех областях, и самописные решения с большой долей вероятности будут проигрывать профессиональным инструментам (библиотекам). Ну и про время разработки всего "руками" не стоит забывать. Однако все вышесказанное отнюдь не означает, что не стоит вообще ничего писать самостоятельно.
1
Бауман
Заблокирован
01.08.2014, 23:46 #13
Вот вам иллюстрация для полного представления, почему кроссплатформенность - это всегда в известной мере убожество
0
Миниатюры
Кроссплатформенное приложение  
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
02.08.2014, 00:01 #14
Цитата Сообщение от Ouroboros-SK Посмотреть сообщение
В отличии от web-программирования, в прикладном, если не использовать никаких фреймворков, то можно с ума сойти)
Да в веб тоже самое. Вот если, скажем, ампутировать модуль поддержки mysql из php (а что, тоже вполне себе библиотека), то мы лишимся поддержки БД. Все остальные варианты эквивалентны для нарастающих требований: пока мы пишем что-то простое в веб, можем ограничиться стандартным комплектом и написать недостающее собственными силами. Как только у нас возникает проект уровня enterprise, ну вот для примера - сайт ebay. Я бы посмотрел как там без доп. инструментария можно было бы обойтись. Причем, я уверен, что команда ebay написала кучу кода самостоятельно, но по большому счету не важно кто пишет фреймворк, ты сам или кто-то еще. Важно есть ли на написание этого кода ресурсы (время, деньги, программисты, квалификация и т.п.). Вот у ebay они явно есть, поэтому они могут себе позволить создание каких-либо инструментов для себя своими силами (но и использование сторонних решений не стоит отметать - наверняка и это есть). А теперь нужно задать этот вопрос себе. Если ответ отрицательный, но самый разумный выбор - использование готового инструментария.

Добавлено через 6 минут
Цитата Сообщение от Бауман Посмотреть сообщение
Вот вам иллюстрация для полного представления, почему кроссплатформенность - это всегда в известной мере убожество
Также хорошо иллюстрирует почему кроссплатформенность подходит (нужна, целесообразна) только для определенного круга задач. Как раз те задачи, которые входят в пересечение множеств. Если мы выходим за рамки, то всегда лучше написать непортабельное, но максимально эффективно использующее возможности платформы решение.
0
02.08.2014, 00:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2014, 00:01
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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