#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 - можно тащить куда угодно.
Комментариев нет:
Отправить комментарий