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

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

Восстановить пароль Регистрация
 
 
AleksyVB
6 / 6 / 1
Регистрация: 10.12.2013
Сообщений: 123
08.05.2014, 11:24     Переносимость программы, куча dll и кроссплатформенность #1
Решил пощупать С++ и 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 для сотрудников офисов и т.д.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 11:24     Переносимость программы, куча dll и кроссплатформенность
Посмотрите здесь:

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


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

Добавлено через 1 минуту
Цитата Сообщение от newbie666 Посмотреть сообщение
ты что сбрендил? :-)
вероятно, он полностью скопировал папку с dll
Цитата Сообщение от newbie666 Посмотреть сообщение
Это у нубов не может
Это у всех не может. Я говорил про чистый C++ без доп.фреймворков и библиотек.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
08.05.2014, 11:43     Переносимость программы, куча dll и кроссплатформенность #6
Цитата Сообщение от AleksyVB Посмотреть сообщение
нужно полюбому перекомпилировать программу
а что Вы хотели от нативных приложений?
Цитата Сообщение от AleksyVB Посмотреть сообщение
В чем преимущество C++ тогда, в быстродействие самой программы на доли секунды, что не будет заметно невооруженном глазом? Низкий уровень не нужен, нужна реализация Gui для сотрудников офисов и т.д.
у каждого языка своя сфера применения, да и одно и тоже написать можно по разному.
newbie666
Заблокирован
08.05.2014, 11:43     Переносимость программы, куча dll и кроссплатформенность #7
Цитата Сообщение от MastAKK Посмотреть сообщение
но лицензия чего-то требует
Ну если тебя волнуют правила, то для статической линковки нужна коммерческая лицензия.
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
08.05.2014, 11:47     Переносимость программы, куча dll и кроссплатформенность #8
Про скайп ошибся, на Qt он написан лишь для линукса

Добавлено через 3 минуты
Цитата Сообщение от newbie666 Посмотреть сообщение
для статической линковки нужна коммерческая лицензия
Кхм... У нас LGPL v2 давно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.05.2014, 11:52     Переносимость программы, куча dll и кроссплатформенность #9
Цитата Сообщение от AleksyVB Посмотреть сообщение
В чем преимущество C++ тогда, в быстродействие самой программы на доли секунды, что не будет заметно невооруженном глазом?
Во-первых неоптимальный код может работать и в десятки раз медленнее оптимального, а есть проги, которые работают не доли секунды в обоих случаях, а заметно дольше. И если у тебя оптимальный код требует 44-х минут, то не оптимальный, который в 36 раз медленнее, потребует уже 26 часов 24 минуты, то есть 1 сутки 2 часа 24 минуты. А если в 50 раз? Тогда уже 36 часов 40 минут, то есть 1 сутки 12 часов 40 минут. А если ещё не оптимальнее? Хотя врядли другие компилируемые в натив языки способны без пессимизации исходника и алгоритма производить на столько не оптимальный код, но я сам видел интерпретатор, работавший мало того, что в 50 раз медленнее натива, так ещё и в лучшем случае. А в худшем во многие тысячи раз. А во-вторых qt - это и есть фреймвок.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
08.05.2014, 11:58     Переносимость программы, куча dll и кроссплатформенность #10
Цитата Сообщение от taras atavin Посмотреть сообщение
А во-вторых qt - это и есть фреймвок.
Думаю, имеется ввиду чем Qt отличается от .Net Framework, просто не все знают, что есть и другие Framework'и, а не только .Net
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.05.2014, 12:00     Переносимость программы, куча dll и кроссплатформенность #11
Ну и ни какое приложение не сможет работать абсолютно на любой платформе. Начиная с того, что другой процессор может не поддерживать коды операций и заканчивая несовместимым форматом исполняемого файла. Даже если к системным функциям не обращаться, разные процессоры могут вообще не иметь совпадающих кодов операций, а разные операционные системы не поддерживать ни одного совпадающего формата исполняемого файла. Да и неиспользование системных функция маловероятно из-за контроля доступа к ресурсам. По-настоящему кросплатформенная порграмма - это всегда программа, имеющая версии, совместимые с разными платформами, но при этом имеющие в точности совпадающий интерфейс и функционал. И mono здесь не аргумент: на какой нибудь системе его может не быть, или он окажется не той версии и прювет лунатикам. Нэтовые проги с винды на винду отлично не переносятся даже с бубном.
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
08.05.2014, 12:02     Переносимость программы, куча dll и кроссплатформенность #12
Цитата Сообщение от taras atavin Посмотреть сообщение
ни какое приложение не сможет работать абсолютно на любой платформе
Java? У них свой формат и своя VM, но всё равно - один раз скомпилил на любой платформе - запустится на любой платформе, поддерживающей Java, на которая установлена оная.

Не по теме:

Не люблю Java =/

Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
08.05.2014, 12:06     Переносимость программы, куча dll и кроссплатформенность #13
Цитата Сообщение от MastAKK Посмотреть сообщение
один раз скомпилил на любой платформе - запустится на любой платформе
Не нужно путать нативный код с промежуточным, который будет выполнятся с помощью какой-то платформы.
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
08.05.2014, 12:07     Переносимость программы, куча dll и кроссплатформенность #14
Croessmah, а, ну раз мы про нативные, тогда да. Тут даже глупо спорить.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.05.2014, 12:08     Переносимость программы, куча dll и кроссплатформенность #15
Цитата Сообщение от MastAKK Посмотреть сообщение
ОС - да, процессор - ну разве что если вы про Android.
Так и запишем: про итаниум, RISC и z-80 не слышал. Кстати, под достаточно ресурсоёмкое приложение можно найти процессор, который его тупо не потянет, стоя не в телефоне, а в компе. И перекомпилировать будет бесполезно.

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

Цитата Сообщение от newbie666 Посмотреть сообщение
ты что сбрендил? :-)
Цитата Сообщение от MastAKK Посмотреть сообщение
вероятно, он полностью скопировал папку с dll
Я копировал те файлы, которые требовала программа, например QT5Guid - 125 мб., без этого файла прога не запускается.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.05.2014, 12:10     Переносимость программы, куча dll и кроссплатформенность #17
Цитата Сообщение от Croessmah Посмотреть сообщение
Не нужно путать нативный код с промежуточным, который будет выполнятся с помощью какой-то платформы.
А это здесь при чём?
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
08.05.2014, 12:17     Переносимость программы, куча dll и кроссплатформенность #18
Цитата Сообщение от taras atavin Посмотреть сообщение
итаниум, RISC и z-8
Я говорил про "популярные" процессора, которые используют большая часть людей сейчас.
Вроде как RISC и z-80 уже не используются, нет? Или я ошибаюсь?

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

Не по теме:

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



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

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

Добавлено через 2 минуты
Кстати, гарантии, что кто нибудь не создаст новый процессор RISC-семейства, нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 12:27     Переносимость программы, куча dll и кроссплатформенность
Еще ссылки по теме:

C++ Переносимость программы в семействе windows
C++ C++ и кроссплатформенность
C++ Создание и использование DLL, Трудности с запуском программы

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

Или воспользуйтесь поиском по форуму:
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
08.05.2014, 12:27     Переносимость программы, куча dll и кроссплатформенность #20
taras atavin, в посте сказано:
Цитата Сообщение от AleksyVB Посмотреть сообщение
под каждый процессор
Не вижу тут слова "абсолютно"...
На данный момент достаточно скомпилить под определенную платформу и заработает на любом из наиболее используемых (Intel/AMD) процессоров.
На андроиде нужно компилить отдельно под Intel и ARM, но это само собой разумеется.
Yandex
Объявления
08.05.2014, 12:27     Переносимость программы, куча dll и кроссплатформенность
Ответ Создать тему
Опции темы

Текущее время: 03:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru