|
2 / 2 / 1
Регистрация: 27.10.2013
Сообщений: 80
|
|
Динамические библиотеки29.10.2013, 15:48. Показов 3707. Ответов 11
Метки нет (Все метки)
Доброго времени суток, программисты! Я создал эту тему, потому что проблема с запуском своих программ на другом компьютере стоит очень остро. В интернете я не нашёл ресурса, который полностью как можно более полно объяснит решение проблемы. Этой темой я хочу поставить точку в этом вопросе. Приступим. Где появляется проблема? Проблема появляется потому, что у человека, которому вы скидываете ваше приложение, нету нужных библиотек. Решений проблемы есть несколько: - Использовать в своём приложении статическую линковку(статические библиотеки).Для этого в свойствах проекта - Link - надо указать /MT (Multi-Threaded). Однако, такое решение проблемы возможно далеко не всегда, более того, не всегда помогает. - Прикрепить к своему приложению необходимые для её выполнения DLL (Dynamic Link Library). Это файлы динамический библиотеки и они имеют расширение .dll.Этим способом мы и воспользуемся, потому что в моём случае я использую приложение с использованием Windows Forms. Соответственно, это проект CLR. А проекты CLR не совместимы с статической линковкой(/MT). 1)Для начала нам нужно определиться, какая разрятность Windows нашего друга, которому надо скинуть приложение. 2)Допустим, он сказал, что у него Windows 7 x32. Запомнили, мы ему отсылаем наше приложение .exe. Его он может кинуть куда угодно. 3)Следующий шаг - это скинуть ему нужный .dll. Мы выяснили, что при запуске нашего приложение оно пишет ошибку: Запуск программы невозможен так как на компьютере отсутствует MSVCR110.dll. Примечание: если ошибка ругается на недостающий MSVCR110D.dll, то это значит что вы закомпилировали программу в Debug. Скомпилируйте её в Release. Определить нежный dll можно установив в виртуальной машине (Virtual Box) винду, в которой вы можете делать кучу эскпериментов, где программа запустится, при каких условиях, какую пишет ошибку, какой файл требует и т.д. 4)Путём тестов, мы определились с нужным .dll. Далее нужно найти этот самый файл. Заходим в папку с Visual Studio, далее в VC\redist\ далее смотрим на разрядонсть системы нашего друга. В моём случае, повторяю, это 32 бита. Значит заходим в папку х86. Если же у него 64 бита - заходим в папку х64. Как только зашли в папку, соответствующей разрядности его системы, заходим в папку Microsoft.VC110.CRT. Название папки может меняться всвязи с версией студии. Внутри этой папки и находится заветный msvcr110.dll. Передаём этот файл другу. 5)Следующий шаг - это настраивание этой DLL. Наш друг должен кинуть этот .dll по этому пути: C:\Windows\System32. Как только он его туда кинул, ему нужно "активировать" этот dll. Как раз по причине того, что люди это забывают, и выскакивае ошибка типа Файл MSVCR110.dll либо не предназначен для выполнения под управлением windows, либо.... Чтобы это исправить, надо нажать Пуск, в поисковике вписать regsvr32 название файла. В моём случае человек должен вписать regsvr32 MSVCR110.dll. 6)Вот и всё, наше приложение легко запускается на другом компьютере. Несколько советов Для упрощения жизни вашего друга, можно сделать для своей программы инсталятор, чтобы он автоматически кидал файл DLL в папку System32. Инсталятор можно очень лгко сделать с помощью программы Smart Install Maker. ПОЖАЛУЙСТА, КОММЕНТИРУЙТЕ ЭТУ ТЕМУ, ПОЛУЧИЛОСЬ ЛИ У ВАС, ИЛИ ЧТО НЕ ПОЛУЧИЛОСЬ! МНЕ ЭТО ОЧЕНЬ ВАЖНО!. Уважаемые модераторы! Если я разместил тему не в том месте, прошу простить! И ещё, если сочтёте нужным, тему можно закрепить! Уверен, поможет многим новичкам, и не только!
0
|
|
| 29.10.2013, 15:48 | |
|
Ответы с готовыми решениями:
11
Статические и динамические библиотеки
Линковка, статические, динамические библиотеки - матчасть |
|
148 / 114 / 21
Регистрация: 15.01.2013
Сообщений: 266
|
|
| 29.10.2013, 15:53 | |
|
А можно просто в настройках линкера убрать галочку Link with dynamic RTL. Или я что-то упускаю в этой жизни?
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 29.10.2013, 15:53 | ||
|
0
|
||
|
2 / 2 / 1
Регистрация: 27.10.2013
Сообщений: 80
|
||
| 29.10.2013, 15:55 [ТС] | ||
|
0
|
||
|
245 / 246 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
| 29.10.2013, 15:59 | |
|
чет мне подсказывает, что вы как-то странно это делали, потому что я вдруг подумал про разные игры и тд и тп, там тысячи разных библиотек и устанавливаются они без прав админа. или я чего-то не понимаю
0
|
|
|
|
|
| 29.10.2013, 16:18 | |
|
Собрать DLL можно с помощь Proc Mononitor или Poc Explorer как делалось для Qt тут Qt5 Перенос приложения на другой компьютер
ЛоЖить в систеные папки не есть хорошо ... Собирайте DLL ложите в папку с exe вашей программы.
0
|
|
|
2 / 2 / 1
Регистрация: 27.10.2013
Сообщений: 80
|
||||
| 29.10.2013, 16:39 [ТС] | ||||
|
Дело в том, что я пытался всё это сделать, что сейчас в коментариях пишут. Но никто ни разу не объяснил как это делается. Все только дают совет, но не объяснение моих действий. Сделал эту тему не для закоренелых опытных программистов, а для тех, кто недавно вместе с С++, для таких как я) Если у вас есть решение проблемы, которое не требует вмешательства в системные папки, пожалуйста, опишите их тут, разложите по полочкам, объясните каждый шаг) Я не говорю конечно, что моё решение самое крутое. Добавлено через 2 минуты Добавлено через 6 минут
0
|
||||
|
|
||
| 29.10.2013, 16:44 | ||
|
Что касается Windows Forms, то если я не ошибаюсь там по другому нужно проверять "среду"
0
|
||
|
2 / 2 / 1
Регистрация: 27.10.2013
Сообщений: 80
|
||
| 29.10.2013, 16:51 [ТС] | ||
|
Добавлено через 1 минуту Вобщем я понял свою главную ошибку, надо было сверху написать не "программисты", а "начинающие программисты" Если там нужно "по-другому" проверять среду, то, объясните новичкам как это делается. Уже много чего мне сказали по поводу минусов этого способа, но ещё никто не написал подобного урока в VS, используя Windows Forms) Пожалуйста, создайте кто-нибудь тему с этим уроком, я обязательно посмотрю и исправлю свои ошибка. Пока что это - единственный для меня вариант, дургого просто не знаю
0
|
||
| 29.10.2013, 16:54 | |
|
0
|
|
|
2 / 2 / 1
Регистрация: 27.10.2013
Сообщений: 80
|
||
| 29.10.2013, 16:57 [ТС] | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 30
|
|
| 16.04.2015, 08:54 | |
|
Для упрощения жизни вашего друга, можно сделать для своей программы инсталятор, чтобы он автоматически кидал файл DLL в папку System32. Инсталятор можно очень легко сделать с помощью программы Smart Install Maker. - Так как это сделать?
0
|
|
| 16.04.2015, 08:54 | |
|
Помогаю со студенческими работами здесь
12
Как включить библиотеки в исполняемый файл, чтобы не приходилось ставить библиотеки (Eclipse) Вызов функции одной динамической библиотеки из другой динамической библиотеки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|