Сделал приложение в C++ при помощи MS VisualStudio 2019 под Win10. Взял из папки Debug *.exe файл. Перенёс приложение на другой компьютер (где нет MS VS 2019, тоже Win10) и вот там при запуске исполняемый файл внезапно для меня стал требовать разные DLL файлы: ucrtbased.dll, MSVCP140D.dll, VCRUNTIME140D.dll. Подскажите, можно ли как-либо настроить проект так, чтобы всё необходимое было включено в *.exe файл проекта и внешние DLL не требовались при перемещении на другой компьютер?
Отслеживать
задан 6 апр 2021 в 19:11
Для начала попробуйте собрать релизную версию, а не дебажную.
6 апр 2021 в 19:23
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Навкидку — есть два способа: собрать дистрибутив Вашей программы или использовать статическую линковку.
К сожалению, в C++ (в отличие от языков, более широко использующих мета информацию о типах, таких, как C#) почти вся работа по указанию зависимостей Вашей программы ложится на пользователя. ТО есть, если Вы на «первом» компьютере перечислите все нужные DLL, то он их упакует в дистрибутив.
Ошибка DLL на компьютере? Как Исправить Ошибку DLL При запуске программ и игр
Да и не все нужные DLL могут иметь версии, подходящие для статической линковки.
К сожалению, боюсь, мой ответ был Вам не особенно полезен.
Отслеживать
ответ дан 6 апр 2021 в 19:26
10.8k 1 1 золотой знак 19 19 серебряных знаков 40 40 бронзовых знаков
как оказалось если произвести build не для debug, а release, то файл не требует указанных библиотек. Заработало. Спасибо за участие
Источник: ru.stackoverflow.com
Regsvr32 регистрация DLL для Win 10 x64: 3 способа и причины проблем
Существует несколько вариантов решения проблемы, связанной с регистрацией документа DLL в операционной системе Windows 10. Начинать можно с любого подходящего способа. Если один не сработал, переходят к следующему.
С использованием «regsvr32.exe» в окне «Выполнить»
Командное окно «Выполнить» – стандартный инструмент, используемый пользователями Виндовс на 32 или 64 bit для устранения разного рода неполадок. Инструкция:
- вызвать рабочее поле, используя комбинацию горячих клавиш «Win» и «R», либо через раздел «Пуск»;
- в пустую строку ввести команду и путь регистрации необходимого файла: exe C:WindowsSystem32dllname.dll;
OpenAL32.DLL скачать бесплатно для Windows 7,8,10 — Как исправить ошибку отсутствует OpenAL32.DLL
- подтвердить запрос кнопкой «ОК» или «Enter».
Регистрация DLL-библиотеки в системе
Проблемы с отсутствием DLL-библиотек в системе могут возникать после установки каких-либо игр и программ. Они всегда исправляются с помощью загрузки нужного DLL-файла из интернета или других сторонних источников. Благодаря тому, что регистрация новых библиотек в Windows работает в фоновом режиме у пользователей нет проблем с их добавлением и дальнейшего корректного запуска.
Однако бывают ситуации, когда выполнение регистрации DLL-библиотек в фоновом режиме в Windows становится невозможным. В таком случае можно самостоятельно выполнить регистрацию нужной библиотеки в системе.
Как зарегистрировать DLL-библиотеку в Windows
Принудительную регистрации DLL-файла в системе можно выполнить как с помощью сторонних программ, так и встроенных инструментов Windows. Однако в последнем случае придется использовать специальные команды для CMD и строки «Выполнить», что может ввести в тупик неопытных пользователей ПК.
Перейдем к доступным вариантам регистрации DLL-библиотеки в системе.
Вариант 1: Стороннее ПО
Вероятно, самый простой из представленных вариантов, так как пользователю не требуется вникать в различные команды. Пример такой программы – OCX/DLL. Это небольшая программка, позволяющая с помощью нажатия пары кнопок выполнить полноценную регистрацию DLL-компонентов в системе.
Скачайте и установите программу в Windows. Перейдите непосредственно к регистрации компонентов:
- После запуска программы переключитесь к разделу «Register OCX/DLL», что расположен в главном меню в левой части интерфейса.
- Будет предложено выбрать тип библиотеки. Помимо DLL там доступен тип OCX. Так как мы рассматриваем регистрацию DLL-библиотеки, то ставьте там соответствующий маркер.
- Теперь нужно указать путь до регистрируемого файла в нижней строке. Чтобы открыть окно выбора файла, воспользуйтесь кнопкой «Browse».
- Откроется окошко «Проводника Windows», в котором нужно выбрать расположение файла в операционной системе и нажать «Открыть».
- Когда файла будет добавлен в интерфейс программы, воспользуйтесь кнопкой «Register».
Во время регистрации DLL-компонента может появится сообщение об ошибке. В таком случае выполните запуск программы OCX/DLL от имени администратора. Кликните правой кнопкой мыши по файлу ярлыку программы и выберите из контекстного меню пункт «Запуск от имени администратора».
Дополнительно функционал OCX/DLL позволяет выполнить отмену регистрации библиотеки в системе. Отвечает за это пункт главного меню «Unregister OCX/DLL». В этом разделе проделываются все те же операции, которые были необходимы для регистрации DLL-библиотеки.
Вариант 2: regsvr32.exe
Данная утилита отвечает за регистрацию DLL-библиотек в системе. Ее можно вызвать несколькими способами, но для неопытного пользователя они могут показаться сложными. Все последующие варианты регистрации будут подразумевать использование данной программы.
Для примера разберем самый простой запуск регистратора DLL-файлов Windows:
- Откройте папку, в которой расположен DLL-компонент, который требуется зарегистрировать.
- Кликните правой кнопкой мыши по названию данного компонента. Из контекстного меню выберите пункт «Открыть с помощью».
- Windows/System32, если разрядность файла и системы соответствуют друг другу;
- Windows/SysWow64, если ОС имеет разрядность 64-бит, а регистрируемый файл 32-бит.
Вариант 3: Регистрация через строку «Выполнить»
Этот вариант подразумевает ввод специальных команд в строку «Выполнить». Все реализуется через встроенные в операционную систему средства и не требует установки каких-либо дополнительных компонентов и программ.
Инструкция выглядит следующим образом:
- Запустите строку «Выполнить». Универсальным способом для всех операционных систем Windows является использование сочетание клавиш Win+R. В некоторых Windows запуск «Выполнить» можно произвести через меню «Пуск».
- За регистрацию DLL-библиотек отвечает встроенная утилита regsvr32.exe. Команда на регистрацию DLL-файла с ее помощью выглядит так: regsvr32.exe C:WindowsSystem32dllname.dll. После названия используемой утилиты идет путь до DLL-файла, а в конце, где стоит «dllname.dll» указывается непосредственно имя DLL-библиотеки.
В случае с последней командой нужно учитывать, какая разрядность у вашей текущей операционной системы. Например, в Windows 64-бит две программы regsver32, которые расположены по двум адресам: C:WindowsSysWOW64 и C:WindowsSystem32. Это сделано не просто так – если у вас 64-битная ОС, но файл DLL 32-бит, то он должен быть перемещен в папку: WindowsSysWoW64. В таком случае команда для регистрации компонента будет выглядеть так: %windir%SysWoW64regsvr32.exe %windir%SysWoW64dllname.dll.
Для применения всех команда в строке «Выполнить» требуется нажать либо кнопку «Ок», либо Enter. Учтите, что запуск требуется проводить только в том случае, если вы вошли в систему от имени администратора.
Вариант 4: Командная строка
В этом варианте нет серьезных отличий от действий в предыдущем. Единственное отличие – все происходит через интерфейс «Командной строки». Некоторым пользователям проще взаимодействовать с ней, так как в таком случае можно посмотреть историю примененных команд.
Процесс регистрации DLL-библиотек с помощью «Командной строки» выглядит следующим образом:
-
Выполните запуск «Командной строки» от имени администратора. Это можно сделать через по меню «Пуск» в Windows 7 и 8 или через поиск по системе для Windows 10. Для запуска от имени администратора в первых двух вариантах нужно нажать правой кнопкой мыши по иконке «Командной строки» и выбрать соответствующий вариант из контекстного меню.
Ошибки регистрации
В большинстве случаев процесс регистрации новых DLL-компонентов в системе проходит без проблем. Однако иногда могут встречаться следующие ошибки:
- «Файл не совместим с установленной версией Windows». Возникает, когда вы пытаетесь установить в 32-битной Windows 64-битный DLL-компонент или наоборот. В первом случае нужно будет скачать файл с разрядностью, что соответствует вашей операционной системе. Второй же случай можно исправить с помощью команды, которая рассматривалась выше.
- «Точка входа не найдена». Можно возникать в следующих случаях:
- Вы пытаетесь зарегистрировать библиотеку, которая уже зарегистрирована в системе;
- Выбранная библиотека не поддерживает команду DllRegisterServer, следовательно, не может быть корректно зарегистрирована;
- Библиотека загружена с ненадежного источника, который распространяет файлы-пустышки с расширением DLL.
Все рассмотренные методы регистрации библиотек DLL имеют одинаковую эффективность и выбор стоит производить в зависимости от того, какой из них вам кажется более удобным. Если у вас возникли проблемы, напишите о них в комментариях. Мы постараемся помочь вам по возможности.
Источник: public-pc.com