| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Программа не запускается на другом компьютере. |
| Автор: Lazin 24.10.2008, 12:29 |
| Я решил раз и навсегда пролить свет на эту тему. так как уже достали =) Что делать если программа написаная с использованием visual studio 2005 не запускается на другом компьютере. Во первых, следует пояснить, что (почти)любая программа на с++ использует стандартную библиотеку - c runtime library, которая содержит набор функций, используемых программой. Например функции для работы с динамической памятью, со строками, с файлами и много чего еще. Эта библиотека может компоноваться либо динасически, либо статически. Так-же существует release и debug версии библиотеки. По умолчанию, когда вы создаете проект в visual studio, он настроен на использование динамической библиотеки. Поэтому, приложение можно будет запустить только на компьютерах, с установленной CRT библиотекой нужной версии. Самый очевидный способ решения поблемы - уствновить вместе с приложением нужные библиотеки. Для этого существует http://www.microsoft.com/downloads/details.aspx?familyid=32bc1bee-a3f9-4c13-9c99-220b62a191ee&displaylang=en. Этот пакет устанавливает стандартную библиотеку с++ (MSVCR80.dll) а так-же ATL, MFC и OpenMP библиотеки. После этого ваше приложение можно запускать на этой машине. Чуть менее очевидный способ - статическая компоновка. Заходим в опции проекта, находим там опции компилятора (C/C++ -> Code Generation), и меняем параметр Runtime Library с "Multi Threaded DLL (/MD)" на "Multi Threaded (/MT)". Для отладочной версии программы нужно поменять "Multi Threaded Debug DLL (/MDd)", на "Multi Threaded Debug (/MTd)". После перекомпиляции, несем программу на любую машину и запускаем. ![]() Добавлено @ 12:38 ps для 2008-й студии нужно использовать Microsoft Visual C++ 2008 Redistributable Package (x86/IA64) |
| Автор: JackYF 24.10.2008, 13:08 |
| Следует заметить, что Visual Studio - не единственная среда разработки А так - спасибо за старания. |
| Автор: Lazin 24.10.2008, 13:14 |
| просто спрашивают в основном про нее |
| Автор: bsa 24.10.2008, 13:23 |
| Есть еще универсальный способ (которым пользуюсь я), который подходит и к другим средам программирования (в т.ч. BCB, Delphi и пр.). Для этого понадобится какая-нибудь программа для просмотра содержимого бинарных файлов. Я использую вьюер входящий в состав Total Commander. Итак, открываем полученный файл exe с помощью вьюера, и ищем по ".DLL" (без кавычек и учета регистра) или другому расширению (например, ".BPL" для BCB), в зависимости от того, на что ругается программа. Будут находиться всякие библиотеки, в т.ч. и стандартные (kernel32.dll, user32.dll и пр.) и не очень. Последние нужно скопировать в дистрибутив. затем ту же операцию повторить для всех библиотек... и так до тех пор, пока не будут найдены все зависимости... |
| Автор: Lazin 24.10.2008, 13:39 |
| bsa, действительно так можно делать, а я и не знал |
| Автор: Ln78 24.10.2008, 15:15 |
А я depends (Dependency Walker). Не знаю, как в Total Commander, а здесь такого рода ошибки выдаются наглядно. |
| Автор: Rickert 24.10.2008, 19:39 |
| +тыща. Модераторы, думаю эту тему стоит закрепить отдельно? |
| Автор: JackYF 25.10.2008, 23:16 |
| Закрепил тему. |
| Автор: Keler 26.10.2008, 14:23 |
| Для 2008 студии только установка Microsoft Visual C++ 2008 Redistributable Package (x86/IA64)?Или есть альтернатива? |
| Автор: Lazin 30.10.2008, 12:53 |
| насколько я знаю разницы, в этом плане, между 2008-й и 2005-й студией нет |
| Автор: Microsoft 3.11.2008, 19:36 | ||||
При компиляции выдаёт:
КАК ЭТО ИСПРАВИТЬ??? ГДЕ ОТКЛЮЧИТЬ "/clr:pure" ??? ( * У меня Microsoft Visual Studio 2008) |
| Автор: jonie 19.11.2008, 10:45 | ||
| кроме depends (входящей в состав VS) есть утилита dumpbin использовать ее примерно так:
покажет импортные библиотеки и функции (хотя не умеет делать глубокого сканирования, как, например, depends) |
| Автор: Annihilator 19.11.2008, 14:26 | ||||||
http://www.bokebb.com/dev/english/1960/posts/196057359.shtml Балмер! Я узнал тебя |
| Автор: skylex 21.12.2008, 15:10 |
| А в билдере как сделать? |
| Автор: bsa 21.12.2008, 23:55 |
| skylex, легко - зайти в настройки проекта и удали все run-time packages, а в настройках линкера включи линковку со статическими библиотеками (кажется, static RTL, или что-то в этом духе). Модератор: для вопросов по билдеру есть свой раздел. |
| Автор: creas0ft 23.12.2008, 02:12 |
| сорри, но где-то видел не помню где можно и в 2008 и 2005 студии собрать чтобы юзалось не MSVCP90.DLL или MSVCP80.DLL, можно скопировать от vc6 msvcrt.lib и подложить это в студию, будет с ней собираться. не пинать и не бить ногами, я дикий бегинер. вот оно _http://www.wasm.ru/forum/viewtopic.php?pid=261576 - но кажется это не то. |
| Автор: graber55 8.6.2009, 22:48 |
| Уважаемые господа и дамы, разумеется. Использование части выше прочитанного не помогло. Части, ибо програмка досталась так сказати "по наследству" и исходников нет. На последних (новых за полгода) ПК не запускается. Пишет - "недостаточно прав пользователя". При попытк расковырять это сообщение выдает - "требуемый рессурс занят другой программой или отключен". В итоге на половине компов работает на другой - нет. Все одинаково (ну вроде-бы). Заранее спасибо. |
| Автор: voland55 12.6.2009, 21:15 |
| господа вы меня извините конечно если я щас глкпость сморожу.новичок ничо не поделаешь,все ж начинали. о каком виде готового продукта щас идет речь? о совершенно готовой к употреблению софтине или как? просто если первый вариант то как то странно получается,я ведь не ставлю при запуске программы никакой редистрибьютэбл пэкэч. наверно я чтото не допонял.спасибо. |
| Автор: graber55 12.6.2009, 22:13 |
| Всем привет. Что понимать под "готовой софтиной". Написал пр-ку, скомпилировал ее и .ехешник (1 файлик) используеш. Но почему он на одном компе с ХР и офисом (НИ каких средств разработки - отродясь небыло) ЗАПУСКАЕТСЯ с пол-оборота, а на другом (таком-же) нет. И дает см. ВЫШЕ. Вот в чем проблема. |
| Автор: azesmcar 15.6.2009, 17:24 |
плохо скачал. |
| Автор: darkwolf 18.7.2009, 09:59 |
| Если компилировать программу через release все работает (вроде)... ну по крайней мере у меня работало... |
| Автор: Potrashitel 18.7.2009, 17:40 |
| Хмм, для билдера вроде надо 1. В Linker откл Dynamic RTL 2. Packages откл Runtime вроде так |
| Автор: Roscherk84 5.8.2009, 23:46 |
| Мучаюсь той же проблемой: приложение работает только на том компьютере, на котором было скомпилировано и слинковано. (Visual Studio 2005 C++) Способ решения через статическую линковку (Multi Threaded (/MT)) мне не подходит. Нужна динамическая загрузка библиотек. С помощью Dependency Walker я нашёл нужные DLL: MSVCR80.dll, MSVCP80.dll и kernel32.dll. Эти библиотеки с того компа, где компилировалось, я положил рядом с exe файлом. Помогло только для Release версии. Для Debug ошибка (Error running program). Убрал манифест в настройках проекта - стало ругаться на то, что библиотеки Visual Studio без манифеста не подключаются. Но есть плюс: теперь если убрать библиотеки из директории программы, то ругается на отсутствие библиотеки и указывает её имя. В связи с этим вопрос: как сделать чтобы в Debug версии при динамической компоновке можно было переносить программу на другие компьютеры без инсталяции redist пакета? И еще вопрос: что это за манифест от Микрософта? |
| Автор: Romikgy 6.8.2009, 00:00 |
| посмотри этим что нужно ехешника... |
| Автор: Roscherk84 6.8.2009, 00:11 | ||
| А ему то же самое нужно, но с буковкой d в конце: MSVCR80d.dll, MSVCP80d.dll и kernel32.dll. И еще MSVCRT.dll, которая зависит от MSVCR80d.dll. Всё, что начинается с msvc, положил в директорию с программой, но всё равно не работает с другого компьютера. Погуглив нашёл http://www.cyberforum.ru/archive/index.php/t-23864.html, что
Но почему? |
| Автор: v_enom 28.9.2009, 16:05 |
| а у меня вот что вылазиет, если включаю MT и отрубаю clr Error 15 error C3381: 'Game' : assembly access specifiers are only available in code compiled with a /clr option f:\мои документы\visual studio 2005\projects\game_killboxes\game_killboxes\GameClass.h 17 Game_KillBoxes что делать? |
| Автор: vosa 20.10.2009, 23:01 | ||
так обидно. теперь мне не написать прогри с признанием любви( |
| Автор: Romashkaz 7.12.2009, 00:55 |
| скачал vcredist на компьютер на котором хочу запустить программку, но ничего не изменилось. Ошибка такова: This application has failed to start because the application configuration is incorrect. Reinstalling the application my fix this problem. Помогите разобраться пожалуйста. |
| Автор: Камчадал 23.4.2010, 11:14 | ||
Сейчас задам дурацкий вопрос и это неизбежно В сообщение указывается что этот самый пэкэдж имеет аргумент в скобках = x86/IA64, а на официальном сайте микрософта (http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=461f404b-d0a9-4c69-8086-30c604f885f5&displayLang=en) требуемый пэкэдж имеет усеченный аргумент = IA64. Причем ни в одном из предлагаемых даунлоадов нет аргументов = x86/IA64. Собственно вопрос: это лыжи не едут или я сильно начинающий? |
| Автор: bsa 23.4.2010, 22:58 |
| второе. IA64 - это для процессора Intel Itanium. У тебя такой? Сомневаюсь. Скорее всего у тебя что-то на базе x86 или x64, если винда 64-х битная. |
| Автор: VitalySergeevich 27.8.2010, 10:25 |
| Прошу прощения, если сейчас напишу глупость... А не легче ли сделать дистрибутив своей программы с помощью, например, InstallShield 2008. При создании дистрибутива InstallShield ищет все зависимости и добавляет их к Setup.exe. Остается лишь установить прогу на др. компьютере. Или я вообще не в тему написал? |
| Автор: bsa 27.8.2010, 14:17 |
| VitalySergeevich, у тебя есть лишние $600? |
| Автор: VitalySergeevich 28.8.2010, 11:40 |
| Зато очень удобно. Нас так учили.) Как-никак - альтернатива. |
| Автор: bsa 29.8.2010, 17:34 |
А вот нас воровать не учили - нас учили думать... Поэтому я использую простейший hex viewer с поиском, и ищу все упоминания .dll в экзешнике. А под *nix это вообще автоматически делается у меня, с использованием команд strings и grep. |
| Автор: JackYF 29.8.2010, 21:51 | ||
Я не следил за темой, но... ldd? |
| Автор: VitalySergeevich 29.8.2010, 22:26 | ||
bsa, знаете ли, не у всех *nix-ы... И вообще, это раздел "Для новичков", поэтому я и решил написать, по-моему, самый простейший способ. Про воровство я ничего не сказал, и поэтому ваш назидательный тон:
Я все сказал!) Прошу прощения за ужасный оффтоп... |
| Автор: bsa 30.8.2010, 10:31 |
У меня на *nix сервере настроена кросскомпиляция ПО под Windows с автоматической сборкой дистрибутивов. Поиск зависимостей для линуховых программ вообще никаких проблем не составляет. |
| Автор: priam220 3.9.2010, 15:46 | ||
в общем беда такая... написал я в блокноте маленькую программку:
все нормально, она работает. Но! Она работает только при наличии пути к bin папке компилятора (C:\MinGW\bin) в системных переменных. Она там ищет длл какую то, как я понимаю, но вот зачем. Это ведь не нормально, что бы конечный пользователь ставил компилятор, что бы запустить свою прогу... |
| Автор: azesmcar 3.9.2010, 15:51 |
да действительно беда... |
| Автор: priam220 3.9.2010, 15:54 |
| очень рад такой оперативности, вооббще этим этот форум мне и нравится! Добавлено через 11 минут и 29 секунд перехвалил, видимо. |
| Автор: azesmcar 3.9.2010, 16:12 | ||
| priam220 поздно вопрос добавил
Нет, потому поставляешь необходимые DLL в папке со своей программой. |
| Автор: priam220 3.9.2010, 16:24 |
| libgcc_s_dw2-1.dll Путем не хитрых эксперементов выяснил, что вышеуказанному коду требуется эта длл (в этой папке). Что нужно вышеуказанному коду в этой дллке? Добавлено @ 16:33 Я понимаю, что вопрос возможно не тривиальный даже для более опытных людей, но все же. Мне как то приходилось компилить борландовским компилятором, не припомню, что я к экзешнику прилаживал библиотеки из самого компилятора. Да и нафига? Системные Апи функции плюс инструкции С. Ничего левого. Зачем длл? |
| Автор: bsa 3.9.2010, 23:19 | ||||
|
| Автор: priam220 4.9.2010, 23:07 |
| хм... работает. Просто. Даже не удобно как то, со второй ссылкой в гугле. Спасибо. |
| Автор: Jmylia 13.11.2010, 21:09 |
| Спасибо за совет!) Visual Studio 2010: открываем нужный вам проект, заховим в Проект > Свойства (или жмем Alt+F7), затем выбираем C/C++ > Создание кода и на против "Библиотека времени выполнения", как писал автор, меняем значение с "Multi Threaded Debug DLL (/MDd)", на "Multi Threaded Debug (/MTd)", компилируем и кидаем .exe файл с Моих Документов кому хотите. Спасибо!) |
| Автор: veranika 23.11.2010, 21:18 |
| Здравствуйте, помогите новичку, я не знаю уже что еще делать. У меня Visual Studio 2008, вылезает ошибка примерно следуещего характера " MSVCP90D . dll не найден . Повторная установка типа поможет". Понятное дело что повторная установка ничего не дала. Как советовали в первом посте , установила Microsoft Visual C++ 2008 Redistributable Package -не помогло.Если меняю Runtime Library с "Multi Threaded DLL (/MD)" на "Multi Threaded (/MT)" -выдает 6 ошибок в программе из 5 строчек и вообще не создает exe. Причем эта MSVCP90D . dll есть а компьютере, я ее уже и в system32, и непосредственно в папку с программой-куда только не копировала-ничего. Что еще можно попробовать? |
| Автор: borisbn 23.11.2010, 23:50 |
почитать FAQ Debug-версия ( а у тебя именно она ) и не должна запускаться на др. компе. Для Release достаточно Microsoft Visual C++ 2008 Redistributable Package |
| Автор: Metalex 4.2.2011, 00:37 | ||||
| Перепробовал все. Компилю в релиз. Добавляю длл-ки. Устанавливаю менял
но получал неизменную ошибку
пробовал ее исправить, не помогает. Брошу экзешник. Подскажите, как заставить работать приложение. |
| Автор: borisbn 4.2.2011, 09:26 | ||
ясно ? |
| Автор: Metalex 4.2.2011, 12:51 |
| И тогда компилить в ? А зачем мне в экзешнике отладочная инфа? |
| Автор: borisbn 4.2.2011, 14:02 | ||
нет. Компилировать для распространения свою программу нужно в Release, а ты устанавливаешь параметры компиляции для Debug.
Я бы тебе посоветовал следующее. Создай новый пустой проект, ничего не меняй у него в настройках, добавь в него свои исходники, и компилируй, выбирая тип Release. Затем установи на Target-компьютер vcredist и запускай там свою программу без проблем. |
| Автор: Metalex 5.2.2011, 14:31 |
| borisbn, попробую! |
| Автор: fuckingniger 21.6.2011, 19:28 | ||||
программа перестала работать после статической компоновки:
Добавлено через 10 минут и 51 секунду поставил release и теперь на моём компе запустилось, а вот неа другом написало:
|
| Автор: bsa 22.6.2011, 11:41 |
| fuckingniger, поставь vcredist_x86.exe нужной версии. |
| Автор: fuckingniger 22.6.2011, 17:05 |
| а что это такое и как это установить? Добавлено через 2 минуты и 24 секунды и на какой компьютер поставить? Добавлено через 9 минут и 15 секунд http://www.microsoft.com/download/en/details.aspx?id=5555 если вы об этом. то я ставил на другом компьютере. но и мой и другой компьютер x64, а эта, как видно, x86. |
| Автор: bsa 22.6.2011, 17:34 |
| fuckingniger, я думаю, что открою тебе вселенскую тайну. ЗНАЧИТ НАДО ПОСТАВИТЬ vcredist_x64.exe!!! А потом, еще многое зависит от настроек проекта. Если у тебя проект настроен на 32-х битную сборку, то и ставить нужно x86. Ставить нужно на тот комп, на котором хочешь запускать. Естественно, что версия этого "redist" должна совпадать с версией студии (по идее, должен идти в комплекте с ней). |
| Автор: Antonv80s 24.8.2011, 14:16 |
| Кстати в блоге яндекса тоже идет обсуждение по этой теме... |
| Автор: nossudak 17.10.2011, 19:23 |
| А вот у меня такая проблема:я писал прогу на win7 32,и она запускалась, а на win7 64 она не желает работать,что с этим можно сделать???не судите строго,я не программист... и еще ,не могу найти себе Borland C++ на windows 7 /64 ,те что скачивал или платные или отказываются работать на моей системе...кто знает ,где можно скачать подходящую версию с кряком,или же как то еще решить эту проблему...(я старался,искал но не нашел) |
| Автор: bsa 18.10.2011, 00:44 | ||||
nossudak, очень часто в windows-программах (и не только) допускают серьезную ошибку (в принципе, WINAPI к этому провоцирует): LONG param = (LONG)pointerToSomething; Так вот, под 32-х битной системой sizeof(LONG) == sizeof(void*), т.е. такое присваивание теоретически легитимно. А вот в windows64 sizeof(void*) == 2 * sizeof(LONG)...
Не существует такой. Фирма Borland проиграла войну компиляторов (продала свой бизнес Embarcadero), так как ее компилятор значительно уступал конкурентам. Теперь правят балом MS (есть бесплатная версия - Visual Studio Express) и mingw (на основе gcc, бесплатный). Скоро, допилят до конца CLang, и, возможно, он начнет вытеснять GCC.
|
| Автор: goodxaker 8.12.2011, 20:41 |
| Здравствуйте, уважаемые форумчане! Что-то я так и не нашел ответа. Программу пишу на Visual studio 2010. Пробовал ставить Multi Threaded Debug (/MTd), но вылезает ошибка несовместимости /clr:pure и /MTd. Что делать, подскажите пожалуйста?? |
| Автор: boostcoder 8.12.2011, 20:46 |
перечитать еще раз тему. внимательно. если не поможет - перечитать еще раз. |
| Автор: goodxaker 8.12.2011, 20:59 |
| Тыкните пальцем, ПОЖАЛУЙСТА!!! |
| Автор: bsa 8.12.2011, 22:22 |
| goodxaker, компилятор тебе человеческим языком говорит, что CLR не совместима с данной опцией. И вообще, если у тебя проект CLR, то тебе в раздел .Net, а не С++. |
| Автор: Exiousle 30.9.2013, 20:54 | ||
Не сердитесь)) написано же "новичок" |
| Автор: akizelokro 30.9.2013, 21:10 |
| Если используешь Windows Forms и мешаешь managed с native кодом, то опцию /clr убирать бесполезно. Если же работаешь в пределах win32 или mfc, то убираешь /clr и тогда "будет тебе щастье" (или просто переносишь код в новый проект, построенный без windows forms и managed кода). |
| Автор: rudolfninja 4.3.2015, 11:28 |
| Приветсвую всех. Возможно, вопрос не в том разделе, но по смыслу очень сюда подходит, поэтому задам тут. Знаю, что в BCB6 можно всю программу ужать только в exe файл. Таким образом это .exe файл можно перенести на любой комп и без дополнительных библиотек запустить его там. Подскажите, пожалуйста, бесплатный аналог BCB6, который умеет так же собирать программу? Мне нужно написать программу простую (по сути, я указываю путь к файлу-картинке и у меня на форме отображается эта картинка), которая поместится в один .exe файл. Ну и очень желательно, чтоб IDE была бесплатной. |
| Автор: Romikgy 4.3.2015, 15:39 |
| http://www.codeblocks.org/ |
| Автор: Pangok 7.2.2016, 15:14 |
| Очень полезная тема, спасибо) |
| Автор: sgvampir 4.3.2016, 08:39 | ||
Пол гугла перерыл, наконецто вы мне помогли)) никак не мог понять почему прога не запускалась скомпиленная в visual studio |