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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.64
pigah
12 / 12 / 2
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
#1

Программа на другом компьютере - C++

05.08.2009, 01:35. Просмотров 2826. Ответов 20
Метки нет (Все метки)

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

Программа крашится на другом компьютере - C++
Здравствуйте. Имеется код программы, на одном компьютере он работает так как положено, но при запуске на другом компьютере происходят...

Ошибка компиляции на другом компьютере - C++
Снова проблема такого радо что скопировал код с одного компьютера и при запуске на своем компиляция выходит с ошибками. #include...

Release. Работа на другом компьютере - C++
Написал программу в Visual Studio 2010. Вчера скинул её другу посмотреть, она не запустилась. Ему нужно было скачать какую-то библиотеку. И...

Запуск программы на другом компьютере - C++
Если я написал, построил прогу и скинул её на другой комп, то она просит .dll файл, есть предложения как упростить установку проги на ...

Как запустить программу на другом компьютере? - C++
Создаём пустой проект windows form. Что надо выставить в компиляторе что бы программа 1) упаковала все ресурсные файлы в 1ин экзешник ...

Exe-файл не работает на другом компьютере - C++
VS2010, release, у меня работает корректно, у заказчика вылазит ошибка, подскажите пожалуйста почему так может происходить (антивирус...

20
odip
Эксперт С++
7157 / 3219 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
05.08.2009, 08:40 #2
В общем случае нужно сделать инсталлятор.
1
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
05.08.2009, 12:35 #3
как сказал odip - сделать инсталлер. Но для инсталлера необходимо узнать, какие файлы требует ваша программа.

Способ 1:
Записать ваш исполняемый файл на компьютер со свежеустановленной ОС и запустить его. Как правило, должна вылетить ошибка с указанным в ней именем файла. Ищите файл на своем компьютере и переносите в директорию с вашей программой на другом. Снова запускаете. Смотрите файл -> переносите. И так пока не запустится.

Способ 2:
Скомпилировать с необходимыми паоаметрами, дабы включить необходимый инструкции из билоиотек в исполняемый файл. Этот шаг индивидуален для каждой среды разработки. Какую ты используешь среду?
1
PB
Просто прогер
1281 / 1068 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
05.08.2009, 13:14 #4
Лучше использовать компилятор, который создаёт код, не нуждающийся в runtime и дригих, подобных либах!
Я вот не парюсь что вдруг моя прога не запустится на другом компе, т. к. компилятор весь требуемый код добавляет в исполняемый файл, который при этом всё равно остаётся компактным.
1
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
05.08.2009, 14:05 #5
Цитата Сообщение от PB Посмотреть сообщение
Лучше использовать компилятор, который создаёт код, не нуждающийся в runtime и дригих, подобных либах!
Так он и использует. Только выставлен сейчас компилятор на создание исполняемого файла с использованием Runtime.
1
Evg
Эксперт CАвтор FAQ
17934 / 6161 / 408
Регистрация: 30.03.2009
Сообщений: 16,913
Записей в блоге: 27
05.08.2009, 14:23 #6
Цитата Сообщение от PB Посмотреть сообщение
Лучше использовать компилятор, который создаёт код, не нуждающийся в runtime и дригих, подобных либах!
Правильнее было бы сказать "использовать настройки, при которых..." ибо все компиляторы умеют строить статически слинкованный код
2
PB
Просто прогер
1281 / 1068 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
05.08.2009, 14:37 #7
Цитата Сообщение от Evg Посмотреть сообщение
"использовать настройки, при которых..." ибо все компиляторы умеют строить статически слинкованный код
Нет, я не это имел в виду.
Я писал про то, что любой нормальный компилятор должен добавлять в исполняемый файл только используемые функции, а не все подряд.
Тогда EXE будет очень компактным (от нескольких КБ) и runtime не понадобятся.
Размер исполняемого файла будет непостредственно зависить от размера кода используемых функций.
0
Evg
Эксперт CАвтор FAQ
17934 / 6161 / 408
Регистрация: 30.03.2009
Сообщений: 16,913
Записей в блоге: 27
05.08.2009, 14:48 #8
Любой нормальный компилятор в исполняемый файл вообще ничего не добавляет, этим занимается линкер. И работает он по стандартным правилам с точностью до модуля. Либо я не так тебя понимаю, а потому приведи нормальный конкретный пример
1
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
05.08.2009, 14:56 #9
Цитата Сообщение от PB Посмотреть сообщение
любой нормальный компилятор должен добавлять в исполняемый файл только используемые функции
как сказал Evg для "статического и слинкованого кода" так и есть. Просто раньше большинство программ писались на C++ (это еще до популярности don net) и вливать в каждую программу некоторый код - невыгодно иногда. Проще установить один раз в систему C++ Runtime Redistributive, и экономить место на исполняемых файлах, которые будут черпать нужные им функции из него.
1
PB
Просто прогер
1281 / 1068 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
05.08.2009, 15:27 #10
Цитата Сообщение от Evg Посмотреть сообщение
Любой нормальный компилятор в исполняемый файл вообще ничего не добавляет, этим занимается линкер
Ну перпутал немного но ведь и так понятно что имелось в виду.


Цитата Сообщение от Evg Посмотреть сообщение
приведи нормальный конкретный пример
Пример - скомпилированая прога с прикреплённом файле.
Эта прога, создаёт окно с кнопкой и обрабатывает события этой кнопки.
Весит 12КБ.
В runtime не нужнадется и будет работать на любом компе если на нём установлена ОС Win98 или более свежая.
Для создания окна, кнопки и обработки событий, использованы функции среды, но если бы всё сделать на API, то скомпилированая прога весила примерно 4КБ.
Это я к тому, что при сборке исполняемого файла, статически должны быть прилинкованы не все функции, а только нужные, что существенно уменьшит размер исполняемого файла.
Это позволит статически прилинковывать runtime библиотеку и при этом размер исполняемого файла будет крохотным, точнее напрямую зависящим от задействованых функий.
2
Вложения
Тип файла: rar Button_Windows.rar (5.8 Кб, 29 просмотров)
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
05.08.2009, 16:08 #11
Цитата Сообщение от PB Посмотреть сообщение
использованы функции среды
а что такое функции среды? это всего лишь обертка для API.
А малый размер - следствие меньшей функциональности среды, так как включается меньше лишнего кода. Если нужен компактный код - используется чистый WinAPI.
1
Evg
Эксперт CАвтор FAQ
17934 / 6161 / 408
Регистрация: 30.03.2009
Сообщений: 16,913
Записей в блоге: 27
05.08.2009, 16:25 #12
PB, просто я не силён в виндах, но по-моему такая программа будет всё-таки обращаться к динамическим библиотекам. Т.е. код, который находится за рамками твоей программы, в других файлах, но эти файлы являются системными, а потому стандартными. Правда я не знаю, как сие проверять. Программу не смотрел, ибо на работе линух

Весь лишний код тянется от библиотек, сопровождающих компилятор. Это делается для того, чтобы все эти winapi накрыть некоторыми удобными в работе интерфейсами, реализованными в виде классов. Эти библиотеки уже не являются стандартными, а являются так называемой run-time поддержкой компилятора. Поэтому при их использовании и получается тяжёлый код (в случае статической линковки).

Ставить работу на winapi как самоцель - по-моему довольно глупое занаятие. Из того же разряда, что и "ассемблер это круто". Да, ты можешьнаписать маленькое приложение. Но более-менее серьёзное приложение для практического применения (а не просто набор кнопок) писать на winapi опухнешь
1
PB
Просто прогер
1281 / 1068 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
05.08.2009, 16:27 #13
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
а что такое функции среды? это всего лишь обертка для API.
По сути дела да, но эта обёртка позволяет намного быстрее разрабатывать проги.
Но в некоторых средах (непример, дельфи) при создании окна с помощью функций среды, в исполняемый файл добавляется много не используемых функций и в итоге исполняемый файл, создающий постое окно имеет размер больше 200КБ
1
Evg
Эксперт CАвтор FAQ
17934 / 6161 / 408
Регистрация: 30.03.2009
Сообщений: 16,913
Записей в блоге: 27
05.08.2009, 16:33 #14
Много неиспользуемых функций - это следствие принципов линковки. Попробуй в свою программу добавить какую-нибудь процедуру типа sscanf (название функции условное, ибо не могу конкретно сказать, что именно даст такой эффект) - у тебя в итоговый код подцепится целый паравоз функций, до которых исполнение никогда не дойдёт, но которые требуются для линковки sscanf'а
1
PB
Просто прогер
1281 / 1068 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
05.08.2009, 16:39 #15
Цитата Сообщение от Evg Посмотреть сообщение
по-моему такая программа будет всё-таки обращаться к динамическим библиотекам
Естественно что к API функциям она обращается. Я про размер runtime библиотек пишу.

Цитата Сообщение от Evg Посмотреть сообщение
Правда я не знаю, как сие проверять. Программу не смотрел, ибо на работе линух
Нет проблем.
В прикреплённом файле аналогичная прога для Linux.


Цитата Сообщение от Evg Посмотреть сообщение
Да, ты можешь написать маленькое приложение. Но более-менее серьёзное приложение для практического применения (а не просто набор кнопок) писать на winapi опухнешь
Согласен.
Но ведь те 12КБ это при использовании функций среды, т. е. runtime библиотека используется и статически прилинкована. Она имеет размер меньше 10КБ. Её размер напрямую зависит от числа функций, задейстрованых в проге.
1
Вложения
Тип файла: rar Button_Linux.rar (9.8 Кб, 16 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2009, 16:39
Привет! Вот еще темы с ответами:

Русские символы в консоли на другом компьютере - C++
Запускаю .exe консольной программы на другом компьютере - в ответ получаю иероглифы. На другом компьютере нет MSC10, на котором писалась...

Ошибка при запуске программы на другом компьютере - C++
Всем доброго времени суток, у меня возникла проблемма при запуске программы на другом компьютере. Программа должна вывести изображение...

Чтение файла exe на другом компьютере, где нет Visual - C++
У меня Vusial Studio 2008 (rus). Я написал программу. Она работает, все хорошо... Но если только один файл .exe скопировать в другой...

Запуск моей программы, написанной в Visual Studio 2015, на другом компьютере - C++
Здравствуйте! Просмотрела все темы с такой же проблемой на этом форуме, решения не нашла. Написала программу с использованием библиотеки...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
05.08.2009, 16:39
Ответ Создать тему
Опции темы

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