Программа не запускается без dll

425
01 сентября 2017, 23:31

Написал программу на c++. В ней есть функции: запуск программы, добавление записи в реестр, цикл и пара функций, а также несколько поключенных заголовков.

Как мне запустить уже скомпилированную программу практически на нулевом Windows (выдается ошибка о не найденом dll файле, возможно ли этот dll вместе с программой скрепить или вшить в нее) или как мне, допустим, с .net framework 4.0 опустить требования программы, скажем, до .net framework 3.0?

Answer 1

Проще всего - у вас явно никакого .NET не видно - собрать программу со статическими библиотеками и не мучиться.

В командной строке - ключик /MT, в проекте - меню Проект - Свойства - Создание кода - Библиотека времени выполнения - Многопоточная.

Тогда все необходимое из runtime-библиотек VC++ будет включено в код программы, и никакие DLL тянуть не потребуется. Размер EXE, понятно, будет побольше, чем при динамической компоновке.

Еще - скажем, если программа должна работать на чем-то стареньком типа XP, и у вас точно не используется ничего нового из API - можно указать линковщику соответствующий параметр /VERSION - а то последние версии VC++ ставят по умолчанию не ниже Windows 7.

Answer 2

MSVCP140D.dll является частью того, что называется Microsoft Visual C++ Run-Time Redistributable. Правильное решение этой проблемы - требовать установки этой штуки на пользовательском компьютере, или распространять вместе с программой ее установщик.

Кстати, D в имени означает отладочную библиотеку. Есть подозрение, что библиотека без D и так присутствует на любой современной винде. Попробуйте скомпилить свою программу в режиме Release и затем запустите на другом компьютере.

Answer 3

Если программа НЕ использует .net framework и не нуждается в нём, то можно так:

  1. Берёшь чистую виртуалку и копируешь на неё программу.
  2. Запускаешь, она падает с сообщением, в котором указана dll, которой её не хватило.
  3. Находишь эту dll у себя и кладёшь рядом с программой. запускаешь снова.

Повторять до тех пор, пока программа не запустится.

А когда запустится, у тебя будет папка с программой и пачкой dll - можно тащить куда угодно.

READ ALSO
Положение дочернего окна

Положение дочернего окна

Какая функция вернет положение управляющего элемента RECT{50,30,300,80}?

351
Некорректная работа методов hide и show.

Некорректная работа методов hide и show.

При отработке ajax-запроса странно работают методы hide и showНа долю секунды блоки, которые должны исчезать, еще висят и только потом с 'дерганием'...

315
Cелектор JQuery (по тексту)

Cелектор JQuery (по тексту)

Например, имеется строка <h1>Слово1 Слово2 Слово3</h1>

325