Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
12 / 12 / 5
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
1

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

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

Author24 — интернет-сервис помощи студентам
Знаю эта тема уже была также пользовался поиском находи но ничего не понял можете подробней рассказать какие файлы нужно переносить на другой комп чтобы программа работала и запускалась нормально ??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2009, 01:35
Ответы с готовыми решениями:

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

Ошибка компиляции на другом компьютере
Снова проблема такого радо что скопировал код с одного компьютера и при запуске на своем компиляция...

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

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

20
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
05.08.2009, 08:40 2
В общем случае нужно сделать инсталлятор.
1
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
05.08.2009, 12:35 3
как сказал odip - сделать инсталлер. Но для инсталлера необходимо узнать, какие файлы требует ваша программа.

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

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


Цитата Сообщение от Evg Посмотреть сообщение
приведи нормальный конкретный пример
Пример - скомпилированая прога с прикреплённом файле.
Эта прога, создаёт окно с кнопкой и обрабатывает события этой кнопки.
Весит 12КБ.
В runtime не нужнадется и будет работать на любом компе если на нём установлена ОС Win98 или более свежая.
Для создания окна, кнопки и обработки событий, использованы функции среды, но если бы всё сделать на API, то скомпилированая прога весила примерно 4КБ.
Это я к тому, что при сборке исполняемого файла, статически должны быть прилинкованы не все функции, а только нужные, что существенно уменьшит размер исполняемого файла.
Это позволит статически прилинковывать runtime библиотеку и при этом размер исполняемого файла будет крохотным, точнее напрямую зависящим от задействованых функий.
Вложения
Тип файла: rar Button_Windows.rar (5.8 Кб, 31 просмотров)
2
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
05.08.2009, 16:08 11
Цитата Сообщение от PB Посмотреть сообщение
использованы функции среды
а что такое функции среды? это всего лишь обертка для API.
А малый размер - следствие меньшей функциональности среды, так как включается меньше лишнего кода. Если нужен компактный код - используется чистый WinAPI.
1
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
05.08.2009, 16:25 12
PB, просто я не силён в виндах, но по-моему такая программа будет всё-таки обращаться к динамическим библиотекам. Т.е. код, который находится за рамками твоей программы, в других файлах, но эти файлы являются системными, а потому стандартными. Правда я не знаю, как сие проверять. Программу не смотрел, ибо на работе линух

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

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

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


Цитата Сообщение от Evg Посмотреть сообщение
Да, ты можешь написать маленькое приложение. Но более-менее серьёзное приложение для практического применения (а не просто набор кнопок) писать на winapi опухнешь
Согласен.
Но ведь те 12КБ это при использовании функций среды, т. е. runtime библиотека используется и статически прилинкована. Она имеет размер меньше 10КБ. Её размер напрямую зависит от числа функций, задейстрованых в проге.
Вложения
Тип файла: rar Button_Linux.rar (9.8 Кб, 17 просмотров)
1
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.08.2009, 16:40 16
Цитата Сообщение от Evg Посмотреть сообщение
Много неиспользуемых функций - это следствие принципов линковки
Вот про это я и пишу.
Неужели нельзя сделать нормальный линкер?
1
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
05.08.2009, 17:11 17
Цитата Сообщение от PB Посмотреть сообщение
Вот про это я и пишу.
Неужели нельзя сделать нормальный линкер?
Линкер нормальный, но в объектном файле (как и в машине вообще) нет понятия процедуры или объекта (оно тольо условное). А есть понятие набора байтов и меток, торчащих в этом наборе

Добавлено через 2 минуты 43 секунды
Цитата Сообщение от PB Посмотреть сообщение
Нет проблем.
В прикреплённом файле аналогичная прога для Linux.
Как и предполагал, речь идёт именно и динамических библиотеках. Удалю с машины libpng12.so.0 (ибо она не есть "стандартная") - код перестанет запускаться. ТОчно так же ты можешь борландовски dll'ки скопировать в системные каталоги и у тебя получится точно такой же "переносимый" бинарник
1
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
05.08.2009, 21:46 18
ты можешь борландовски dll'ки скопировать в системные каталоги и у тебя получится точно такой же "переносимый" бинарник


Добавлено через 6 минут 27 секунд
Ищите файл на своем компьютере и переносите в директорию с вашей программой на другом. Снова запускаете. Смотрите файл -> переносите. И так пока не запустится.
Это все было верно до появления Visual Studio 2005 и ее runtime библиотек.
Например берем файл msvcr80.dll
Можно его скопировать в каталог к exe-файлу, но эта dll так и не будет использоваться !
Для интереса можете поискать где в каталоге C:\WINDOWS\ находится файл msvcr80.dll. Его либо вообще там не будет, либо будет лежать где-то в C:\WINDOWS\WinSxS\...
Если программа использует такие dll-ки, то нужно либо писать специальный инсталлятор, либо ставить в систему runtime для VS2005 (еще есть для VS2008) - он раздается на сайте microsoft, либо предупредить пользователя, что нужно поставить этот runtime.
1
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 2
21.01.2013, 14:58 19
Цитата Сообщение от PB Посмотреть сообщение
Ну перпутал немного но ведь и так понятно что имелось в виду.


Пример - скомпилированая прога с прикреплённом файле.
Эта прога, создаёт окно с кнопкой и обрабатывает события этой кнопки.
Весит 12КБ.
В runtime не нужнадется и будет работать на любом компе если на нём установлена ОС Win98 или более свежая.
Для создания окна, кнопки и обработки событий, использованы функции среды, но если бы всё сделать на API, то скомпилированая прога весила примерно 4КБ.
Это я к тому, что при сборке исполняемого файла, статически должны быть прилинкованы не все функции, а только нужные, что существенно уменьшит размер исполняемого файла.
Это позволит статически прилинковывать runtime библиотеку и при этом размер исполняемого файла будет крохотным, точнее напрямую зависящим от задействованых функий.
Подскажи пожалуйста, если можешь дать исходник, как ты скомпилировал эту программу.

Я создал ПУСТОЙ c++->win32->Проект Win32 под visual studio 2012. Добавил файл file.cpp с кодом
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK);
    return 0;
}
Скомпилировал и выполнил У меня получился файл 58 Кб. Твой же весит 13Кб.
Изменял свойства проекта:
Убрал набор символов Unicode что бы программа компилировалась
набор инструментов платформы visual studio 2012 - Windows XP что бы в winxp запускалось
Библиотека времени выполнения /MT что бы без 110dll

Вот что вышло
Win32Project1.zip
0
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
22.01.2013, 01:26 20
mishvecov, он пишет на Pure Basic'е, это не то. По твоему коду исходнику 800 байтов размер будет.
Минимальный размер EXE файла PE формата. Читай внимательно и гугли, удачи.
1
22.01.2013, 01:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2013, 01:26
Помогаю со студенческими работами здесь

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

Не могу открыть программу на другом компьютере
Я создал программу и послал другу что-бы он проверил, но у него вылетают ошибки &quot;Не удается...

Создание приложения, работающего на другом компьютере
Так, сразу сообщу, что за 2 часа интернет-серфига не смог найти решение, вот допустим у меня есть...

Запуск консольного приложения на другом компьютере
Доброго всем времени суток.Вопрос следующий,как запустить только что откомпилированное и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru