Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
8 / 8 / 2
Регистрация: 10.12.2013
Сообщений: 148

Переносимость программы, куча dll и кроссплатформенность

08.05.2014, 11:24. Показов 3614. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил пощупать С++ и Qt после C#.

Создал простейшее консольное приложение и оконное Qt. В итоге, что бы приложение открылось вне IDE Qt пришлось скопировать в папку с программой dll для консольного приложения на 1мб+, для оконного на 350мб+.

При переносе приложения на другие компьютеры вместе с этой кучей dll консольное приложение работает, а вот оконное нет, выдает Microsoft Visual C++ Runtime Library - This app has requested the Runtime to terminate it in an unusual way. VC++ redistribut требует?

Если надо таскать dll на 300+ мб то чем это отличается от framework тогда? Наверно их вшить в приложения можно, но в любом случае программа сильно увеличится в размерах.

К тому же, как я правильно понял в идеале надо перекомпилировать программу под каждый процессор и ОС отдельно, причем если для виндуса может быть перенос копи пастом сработать, то для линукса нужно полюбому перекомпилировать программу(что бы она работала без wine), в связи с этим сильно разочаровался, так как под кросплатформенностью я понимал простой перенос программы на любую ОС, на любой проц. Лично проверял, что программы, созданные под .Net спокойно работают в Linux без wine под mono.

В чем преимущество C++ тогда, в быстродействие самой программы на доли секунды, что не будет заметно невооруженном глазом? Низкий уровень не нужен, нужна реализация Gui для сотрудников офисов и т.д.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2014, 11:24
Ответы с готовыми решениями:

Dll перевод в кроссплатформенность
Есть программа написанная с рядом DLL , код внутри программы и внутри dll полностью Кроссплатформенный (буст+стл) в чистом виде. Хочу...

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

Переносимость программы
Есть программа, которая использует библиотеку libmysqlclient.so (и еще несколько других). Компилирую у себя на компьютере. Переношу на...

20
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
08.05.2014, 11:29
Цитата Сообщение от AleksyVB Посмотреть сообщение
350мб+
Юзайте Qt 4.8 и компильте в релиз. Вес получится ~20 мбайт.
+можете UPX'ом сжать.
Цитата Сообщение от AleksyVB Посмотреть сообщение
чем это отличается от framework
Таки Qt и есть framework.
Цитата Сообщение от AleksyVB Посмотреть сообщение
К тому же, как я правильно понял в идеале надо перекомпилировать программу под каждый процессор и ОС отдельно
ОС - да, процессор - ну разве что если вы про Android.
Но (!) код менять не придется, просто нужно будет скомпилировать под конкретную платформу, ибо форматы исполняемых файлов у всех разные.
Цитата Сообщение от AleksyVB Посмотреть сообщение
В чем преимущество C++ тогда, в быстродействие самой программы на доли секунды, что не будет заметно невооруженном глазом?
Это уже тема для целой дискуссии. У C++ есть достаточно преимуществ. Производительность, стабильность лишь немногие из них.
Только вот C++ не может в GUI и это печально.


И вы пишете не в тот раздел, тут есть целый раздел, посвященный Qt.
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
08.05.2014, 11:34
Вот вам либы на Qt4 (core, gui и mingw'шные). Сжаты UPX'ом с --ultra-brute
upx.7z
0
Заблокирован
08.05.2014, 11:40
Цитата Сообщение от MastAKK Посмотреть сообщение
Только вот C++ не может в GUI
Это у нубов не может, а так то есть DirectX под Windows или же OpenGL для кроссовости.
Цитата Сообщение от AleksyVB Посмотреть сообщение
Наверно их вшить в приложения можно
можно - статическая линковка называется (тот ещё геморой)
Цитата Сообщение от AleksyVB Посмотреть сообщение
но в любом случае программа сильно увеличится в размерах
не сильно, но увеличится
Цитата Сообщение от AleksyVB Посмотреть сообщение
для оконного на 350мб+.
ты что сбрендил? :-)
С собой надо таскать столько DLL-к, сколько ты модулей подключил, ну и плюс там парочка системных
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
08.05.2014, 11:42
Цитата Сообщение от AleksyVB Посмотреть сообщение
их вшить в приложения можно
Конечно, это называется статической линковкой. Только вот там есть некоторые ограничения, точно уже не помню, но лицензия чего-то требует, если будешь линковать статически.
Цитата Сообщение от AleksyVB Посмотреть сообщение
программа сильно увеличится в размерах.
Будет весить ~20 мбайт +-
Посмотрите на скайп. Насколько мне известно, он написан с использованием Qt. Если откроете папку со скайпом, то увидите лишь Skype.exe, который весит 20 мбайт. Вот вам и статическая линковка.

Добавлено через 1 минуту
Цитата Сообщение от newbie666 Посмотреть сообщение
ты что сбрендил? :-)
вероятно, он полностью скопировал папку с dll
Цитата Сообщение от newbie666 Посмотреть сообщение
Это у нубов не может
Это у всех не может. Я говорил про чистый C++ без доп.фреймворков и библиотек.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
08.05.2014, 11:43
Цитата Сообщение от AleksyVB Посмотреть сообщение
нужно полюбому перекомпилировать программу
а что Вы хотели от нативных приложений?
Цитата Сообщение от AleksyVB Посмотреть сообщение
В чем преимущество C++ тогда, в быстродействие самой программы на доли секунды, что не будет заметно невооруженном глазом? Низкий уровень не нужен, нужна реализация Gui для сотрудников офисов и т.д.
у каждого языка своя сфера применения, да и одно и тоже написать можно по разному.
0
Заблокирован
08.05.2014, 11:43
Цитата Сообщение от MastAKK Посмотреть сообщение
но лицензия чего-то требует
Ну если тебя волнуют правила, то для статической линковки нужна коммерческая лицензия.
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
08.05.2014, 11:47
Про скайп ошибся, на Qt он написан лишь для линукса

Добавлено через 3 минуты
Цитата Сообщение от newbie666 Посмотреть сообщение
для статической линковки нужна коммерческая лицензия
Кхм... У нас LGPL v2 давно
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
08.05.2014, 11:52
Цитата Сообщение от AleksyVB Посмотреть сообщение
В чем преимущество C++ тогда, в быстродействие самой программы на доли секунды, что не будет заметно невооруженном глазом?
Во-первых неоптимальный код может работать и в десятки раз медленнее оптимального, а есть проги, которые работают не доли секунды в обоих случаях, а заметно дольше. И если у тебя оптимальный код требует 44-х минут, то не оптимальный, который в 36 раз медленнее, потребует уже 26 часов 24 минуты, то есть 1 сутки 2 часа 24 минуты. А если в 50 раз? Тогда уже 36 часов 40 минут, то есть 1 сутки 12 часов 40 минут. А если ещё не оптимальнее? Хотя врядли другие компилируемые в натив языки способны без пессимизации исходника и алгоритма производить на столько не оптимальный код, но я сам видел интерпретатор, работавший мало того, что в 50 раз медленнее натива, так ещё и в лучшем случае. А в худшем во многие тысячи раз. А во-вторых qt - это и есть фреймвок.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
08.05.2014, 11:58
Цитата Сообщение от taras atavin Посмотреть сообщение
А во-вторых qt - это и есть фреймвок.
Думаю, имеется ввиду чем Qt отличается от .Net Framework, просто не все знают, что есть и другие Framework'и, а не только .Net
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
08.05.2014, 12:00
Ну и ни какое приложение не сможет работать абсолютно на любой платформе. Начиная с того, что другой процессор может не поддерживать коды операций и заканчивая несовместимым форматом исполняемого файла. Даже если к системным функциям не обращаться, разные процессоры могут вообще не иметь совпадающих кодов операций, а разные операционные системы не поддерживать ни одного совпадающего формата исполняемого файла. Да и неиспользование системных функция маловероятно из-за контроля доступа к ресурсам. По-настоящему кросплатформенная порграмма - это всегда программа, имеющая версии, совместимые с разными платформами, но при этом имеющие в точности совпадающий интерфейс и функционал. И mono здесь не аргумент: на какой нибудь системе его может не быть, или он окажется не той версии и прювет лунатикам. Нэтовые проги с винды на винду отлично не переносятся даже с бубном.
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
08.05.2014, 12:02
Цитата Сообщение от taras atavin Посмотреть сообщение
ни какое приложение не сможет работать абсолютно на любой платформе
Java? У них свой формат и своя VM, но всё равно - один раз скомпилил на любой платформе - запустится на любой платформе, поддерживающей Java, на которая установлена оная.

Не по теме:

Не люблю Java =/

0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
08.05.2014, 12:06
Цитата Сообщение от MastAKK Посмотреть сообщение
один раз скомпилил на любой платформе - запустится на любой платформе
Не нужно путать нативный код с промежуточным, который будет выполнятся с помощью какой-то платформы.
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
08.05.2014, 12:07
Croessmah, а, ну раз мы про нативные, тогда да. Тут даже глупо спорить.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
08.05.2014, 12:08
Цитата Сообщение от MastAKK Посмотреть сообщение
ОС - да, процессор - ну разве что если вы про Android.
Так и запишем: про итаниум, RISC и z-80 не слышал. Кстати, под достаточно ресурсоёмкое приложение можно найти процессор, который его тупо не потянет, стоя не в телефоне, а в компе. И перекомпилировать будет бесполезно.

Добавлено через 46 секунд
Цитата Сообщение от MastAKK Посмотреть сообщение
Java? У них свой формат и своя VM, но всё равно - один раз скомпилил на любой платформе - запустится на любой платформе, поддерживающей Java, на которая установлена оная.
А ничего, что можно найти платформу, для которой нет java-машины?
0
8 / 8 / 2
Регистрация: 10.12.2013
Сообщений: 148
08.05.2014, 12:09  [ТС]
Цитата Сообщение от MastAKK Посмотреть сообщение
Таки Qt и есть framework.
Я не правильно задал вопрос, отличие от .Net, что .Net программа требует наличие .Net Framework (состоящей в том числе из библиотек dll), что Qt программа, то есть С++ gui приложение, требует наличие библиотек. Принципы то понятны, но по сути, в обоих случаях что то требуется, только просто в одном случае создатель .Net коммерческая компания (я так и не доказал себе особо веские преимущества с++ после прочтения нескольких тем в 100 страниц в разделе "Священные войны" для создания прикладных приложений - интерфейсов для БД для малого-среднего бизнеса, не связанного с программированием).

Цитата Сообщение от newbie666 Посмотреть сообщение
ты что сбрендил? :-)
Цитата Сообщение от MastAKK Посмотреть сообщение
вероятно, он полностью скопировал папку с dll
Я копировал те файлы, которые требовала программа, например QT5Guid - 125 мб., без этого файла прога не запускается.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
08.05.2014, 12:10
Цитата Сообщение от Croessmah Посмотреть сообщение
Не нужно путать нативный код с промежуточным, который будет выполнятся с помощью какой-то платформы.
А это здесь при чём?
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
08.05.2014, 12:17
Цитата Сообщение от taras atavin Посмотреть сообщение
итаниум, RISC и z-8
Я говорил про "популярные" процессора, которые используют большая часть людей сейчас.
Вроде как RISC и z-80 уже не используются, нет? Или я ошибаюсь?

Добавлено через 1 минуту

Не по теме:

Короче, я совсем запутался о теме диалога, пойду свой HDD чинить :)



Добавлено через 1 минуту
Цитата Сообщение от AleksyVB Посмотреть сообщение
QT5Guid
Так это дебажная либа, скомпильте в релиз.
Ещё можете UPX'ом их сжать, жмёт хорошо.
И вообще, имхо, пока лучше юзать Qt4, если андроид не нужен.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
08.05.2014, 12:23
Цитата Сообщение от MastAKK Посмотреть сообщение
Я говорил про "популярные" процессора, которые используют большая часть людей сейчас. Вроде как RISC и z-80 уже не используются, нет? Или я ошибаюсь?
Вам растолковать слово "абсолютно"?

Добавлено через 1 минуту
Цитата Сообщение от AleksyVB Посмотреть сообщение
В чем преимущество C++ тогда...? Низкий уровень не нужен,
А он его и не тянет.

Добавлено через 2 минуты
Кстати, гарантии, что кто нибудь не создаст новый процессор RISC-семейства, нет.
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
08.05.2014, 12:27
taras atavin, в посте сказано:
Цитата Сообщение от AleksyVB Посмотреть сообщение
под каждый процессор
Не вижу тут слова "абсолютно"...
На данный момент достаточно скомпилить под определенную платформу и заработает на любом из наиболее используемых (Intel/AMD) процессоров.
На андроиде нужно компилить отдельно под Intel и ARM, но это само собой разумеется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2014, 12:27
Помогаю со студенческими работами здесь

Переносимость программы
Программа написана на borland C++ builder. При попытке запустить ее на компьютере где нет такой среды пишет "невозможно запустить,...

Переносимость программы в семействе windows
Ранее писал программу на visual 2010 и windows 7, затем перешел на visual 2013 и windows 8.1. И теперь выскакивает вот такая ошибка: ...

Как обеспечить переносимость программы
Дело в том,что программу я построил,но сохраняется то не сам ехе-шник,а весь геморрой типа конструктор,дизайнер и пр. а если выдернуть из...

Переносимость программы. Отображение рисунка в PictureBox
Проблема: При переносе программы на другой компьютер в PictureBox пусто или выдает ошибку(не найден файл...) Как грамотно сделать, что бы...

Куча в DLL и EXE
Что-то не понимаю - почему куча exe и dll разная, ведь адресное пространство процесса одно?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru