Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

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

#cpp #net #dll


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

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


Ответы

Ответ 1



Проще всего - у вас явно никакого .NET не видно - собрать программу со статическими библиотеками и не мучиться. В командной строке - ключик /MT, в проекте - меню Проект - Свойства - Создание кода - Библиотека времени выполнения - Многопоточная. Тогда все необходимое из runtime-библиотек VC++ будет включено в код программы, и никакие DLL тянуть не потребуется. Размер EXE, понятно, будет побольше, чем при динамической компоновке. Еще - скажем, если программа должна работать на чем-то стареньком типа XP, и у вас точно не используется ничего нового из API - можно указать линковщику соответствующий параметр /VERSION - а то последние версии VC++ ставят по умолчанию не ниже Windows 7.

Ответ 2



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

Ответ 3



Если программа НЕ использует .net framework и не нуждается в нём, то можно так: Берёшь чистую виртуалку и копируешь на неё программу. Запускаешь, она падает с сообщением, в котором указана dll, которой её не хватило. Находишь эту dll у себя и кладёшь рядом с программой. запускаешь снова. Повторять до тех пор, пока программа не запустится. А когда запустится, у тебя будет папка с программой и пачкой dll - можно тащить куда угодно.

Комментариев нет:

Отправить комментарий