| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT 4] Проблема переноса программ на другие ПК |
| Автор: Moby 26.1.2009, 15:41 |
| Всем привет! Как многие уже поняли, из большого кол-ва созданных мною тем, я пишу в Visual Studio. Проблема не загрузки картинки, когда в *.load() указываешь правильный адрес, почти решена. Надо специальные модули с собой таскать. Теперь возникла такая ситуация. Дома есть два ПК. На одном ХР, .Net 3.5, пишу на Visual Studio, там все запускается. На втором ПК где есть Vista, и если не ощибаюсь в Viste уже есть .Net 3.5, все так же нормально запускаеться, ну кроме загрузки рисунков. Теперь, когда запускаю на других ПК, где нет либо Vista, либо .Net 3.5 прога не запускается. "Причём тут .Net" - я подумал, ведь не на C# пишу. Потом подумал, что может это из-за среды разработки зависит. Ведь в моём случае я как раз использую Microsoft среду. А теперь внимание, два вопроса. 1 - Я правильно установил причину не запускания проги(из-за .Net 3.5)? 2 - Какую тогда использовать среду разработки? Дайте плиз ссылочку или хотя бы точно что нужно, ну там название, версия.... QDevelop или Eclipse или QCreator решат мою проблему кроссплатформености? |
| Автор: pan2004 26.1.2009, 17:07 |
| 1. NET тут совершенно не при чем. Во первых, убедись, что ты пытаешься переносить Release, но никак не Debug версию(дебаг версии библиотек(любых) как правило отсутствуют на компьютере обычного юзера и оч много весят). В случае C++ программы надо таскать за собой так называемый CRT(C(++) Runtime Library), обычно в виде длл(у микрософта это типа MSVCRT*.dll). Это зависит от компилятора. Однако, тк VStudio достаточно популярная среда разработки, какие-то версии этой длл всегда есть на компьютере Windows пользователя(сам сказал, что под Вистой все идет). Естественно, если длл старой версии, то работать не будет, придется тащить свою(и копировать при надобности в windows/system32). Что можно сделать: а) посмотреть какие длл нужны программе, с помощью например dependency walkerа. б) слинковать CRT статически - см опции проекта. В таком случае длл тащить за собой не надо будет. 2. Что ты перечислил, это все IDE, к кросплатформенности самих создаваемых приложений не имеющие ни малейшего отношения. Например, их можно спокойно настроить для работы с майкрософтовским компилятором. Для "кросплатформенности" надо по меньше использовать всякие расширения компилятора, и выбирать gcc(of course |
| Автор: ecspertiza 26.1.2009, 17:36 |
| pan2004 +1 |
| Автор: Acer 26.1.2009, 19:33 |
| У меня с gcc нет никаких проблем... XP, Vista - везде работает. Так что и Вам советую |
| Автор: pan2004 26.1.2009, 23:42 |
Как сказать. А вот Qt::phonon не работает) нигде. Да и какая разница, тащить за собой микрософтовскую CRT или еще и mingwm10.dll в придачу(от первой можно избавится, а вот вторую не слинкуешь статически)? Одна длл.. |
| Автор: Moby 27.1.2009, 15:38 |
| Спасибо за ответы. Я понимал, что дело конечно в компиляторе, а не в среде, но как я думал среда использует конкретный компилятор, вот и думал, что может от этого зависит, что мол Visual Studio использует что-то не то. Программку я соответственно делаю релизной версией. Первое что я попробовал, это потаскать за собой все MSVCRT*.dll. На ПК(в папке windows) нашёл несколько MSVCRT*.dll. Все их впихнул в папку с релиз версией. И оказалось, что они уже там были, ну большинство из них, только не видны были. Это не помогло. Теперь буду пробовать с gcc и icc. Вот тут возникает вопрос, а точнее пару. Какой из них подходит для Visual Studio, как я понял icc? И как интегрировать их\его в Visual Studio? |
| Автор: ecspertiza 27.1.2009, 16:32 |
| Понимаешь студия здесь непричём, ты можешь компилить и из командной строки. Попробуй использовать gcc. Хотя это дело на любителя. |
| Автор: Любитель 27.1.2009, 16:38 | ||
Если студия 2005 или выше, то это и не поможет. Уже ни раз писал в форуме по VC++. Если одним словом, надо таскать не длл-ки, а пакет VC++ 200x Runtime Redistributable. Он есть на диске со студией, например точно. И (при полной установке) в папочке со студией где-то тоже. Ну и, в конце концов, на сайте MS. |
| Автор: Moby 27.1.2009, 17:32 |
| Любитель, помогло. Только вот такой вопрос. Папку я не нашел. Я просто на другом ПК поставил VC++ 2008 Runtime Redistributable и все заработало. Где эта папка лежит? Но в целом это дело не решает, ну в моем понимании. Мне надо, что бы после компиляции релиз версии я мог смело дать кому угодно папку, ну запихнув предварительно нужные qt *.dll и модули. Как мне это сделать? Наверно надо "копать" в сторону компилятора. Объясните как мне интегрировать в Студию нужный компилятор и где его скачать? |
| Автор: Любитель 27.1.2009, 17:37 |
| Нет. Если не хочешь ставить пакет выходов два: 1. Статик-линк (только для действительно маленьких приложений. 2. Длл-ки в папочке и хитрости с манифестами. Подробности - МСДН по поводу WinSxS. Вообщем менять компилятор - это странное решение (я не против gcc и icc - не в том дело, в данном случае нет никаких причин). |
| Автор: Torsten 27.1.2009, 18:00 |
| Проблема в динамических библиотеках. Собирай всегда статически и проблем не будет, размер приложения сейчас не играет никакой роли, уже прошли те времени, когда каждый метр был на счету. |
| Автор: Любитель 27.1.2009, 18:36 |
| И прощай поддержка плагинов в Qt? ;) |
| Автор: ecspertiza 28.1.2009, 09:39 | ||
Предлогаю сделай инсталяшку проекта, будешь всем раздовать по одному файлу Install.exe, попользуй софт Inno Setup. |
| Автор: ecspertiza 28.1.2009, 09:52 | ||
Предлогаю сделай инсталяшку проекта, будешь всем раздовать по одному файлу Install.exe, попользуй софт Inno Setup. |
| Автор: Elfebet 28.1.2009, 11:10 | ||
неправда я использую студию 2005, кьюте скомпилена статически и плагины отлично работают. Только в своих приложениях нужно подключать плагины так
|
| Автор: Любитель 28.1.2009, 14:15 |
| Ты не про то. Я про поддержку нормального плагин-фреймворка. В виде отдельных плагинов-библиотек. Можно (поиздевавшись над исходниками Qt) заставить работать плагины и так, но в каждый вкомпиливать Qt - уж избавьте меня. Статик-линк использовать следуеттогда и только тогда, когда приложение наоборот маленькое и борьба идёт за то, чтобы его ещё больше минимизировать. Чем хуже таскать длл-ки?! О том, как это делается в случае VC++ 200x (5/8) можно подробно прочитать в МСДН. Если кому интересно, могу дать конкретную ссылку. |
| Автор: just_geek 29.1.2009, 01:20 | ||||
Не правда, главное чтоб manifest CRT'шный был вместе с дллками в папке с программой. |
| Автор: Любитель 29.1.2009, 01:55 |
| Там несколько вариантов. Расположения длл-ок при юзании манифестов. Но при простом деплое - лучше всего воспользоваться готовым пакетом. А насчёт других вариантов - я писал выше |
| Автор: Moby 30.1.2009, 12:50 | ||
Спасибо, это мне то же нужно. Скачал, изучаю что да как. А вот такой вопрос. Что же мне делать с VC++ 2008 Runtime Redistributable? Я не смог найти папку, в поиске вводил и так и сяк, но папку не нашел. Где она может лежать? И кстати, можно ли при помощи Inno Setup селать вот что: есть моя прога, есть еще один *exe который надо поставить, к примеру тот же VC++ 2008 Runtime Redistributable, так можно ли сделать так, что бы во время инсталяции еще и этот второй *ехе начал ставиться, ну или хотя бы предложил бы? |
| Автор: ecspertiza 30.1.2009, 12:56 | ||||
да можно, я тоже самое с Firebird делал, покури мануал по Inno setup, вообще вот как я писал.
|
| Автор: SABROG 30.1.2009, 13:01 |
| Чем Inno Setup лучше NSIS? |
| Автор: ecspertiza 30.1.2009, 13:34 |
| SABROG, если чесно немогу сказать т.к NSIS непользовался, но про Innso Setup могу сказать, что это довольно маленькая и простая софтинка, позволяет делать всё что требуется для создаия установочного файла + у неё в комплекте шикарный мануал(на русском) и демки. |
| Автор: just_geek 30.1.2009, 13:40 |
| Визуалка полная или express ? Можно в ней же инсталляху создавать. И еще раз повторюсь как вариант кинуть из папки Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\ (подставить нужную версию) все файлы в папку с программой (вместе с манифестом). И все будет пучком. VC++ Runtime Redistributable - файл должен называться vcredist_x86.exe |
| Автор: Moby 6.2.2009, 15:28 | ||
Наконец-то нашел эти файлы. Спасибо. То что надо! Итого вся прога весит примерно10-12 метров. Что вполне нормально! А при помощи Inno Setup вообще получается шикарно, один setup файл. Всем ОГРОМНОЕ спасибо! |
| Автор: Mormishka 16.8.2011, 18:38 | ||
Как нужно собирать статистически? |