Как указать приложению путь к dll

Обновлено: 06.07.2024

Если в реестре для данной библиотеке прописан специальный путь поиска, то используется он.

TestPath.exe - Unable To Locate DLL
The dynamic link library kernel34.dll could not be found in the specified path E:\Programs\Delphi6\Projects\Test\path;.;E:\WINNT\System32;E:\WINNT\sy stem;E:\WINNT;E:\Programs\Far1705;d:\apath;c:\apath.

Т.е. сначала ищет в текущем каталоге (потом в какойто точке[?] какая разница между текущим каталогом и точкой я не понял), потом в системных папках, потом в системной "path" и наконец в пользовательском "path".
И тут возникает сразу два вопроса:
1. Откуда берётся информация о расположении системных каталогов (ведь под другой версией винды они могут быть и другими).
2. Что это за странную информацию мне возвращает функция GetEnvironmentVariable : E:\Programs\Delphi5\Bin;d:\apath;c:\apath?

"том же порядке, что и Windows" Вот именно этого я и пытаюсь добиться. :(

То, чего ты добиваешься, находится в ЛЮБОЙ книжке по Delphi, в которой есть описание работы с DLL.
Там описана последовательность перебора системой каталогов прии загрузке бибиотек.

Я только что заметил что функция GetEnvironmentVariable возвращает "E:\Programs\Delphi5\Bin;d:\apath;c:\apath", а path в командной строке: "E:\Programs\Far1705;d:\apath;c:\apath". Почему они так отличаются?

-=begin=-
Эта настройка может пригодиться, чтобы заставить программу, запускаемую по сети использовать локальные dll-ки, а также в тех случаях, когда первой загружается неправильная версия dll.
Запустите regedit и найдите ветвь
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager

Создайте новый DWORD ключ с именем "SafeDllSearchMode" (или измените существующий) и установите его значение в 1, если вы хотите заставить Windows сначала искать библиотеки в System и Windows папках, или в 0, если вы хотите, чтобы сначала проверялась текущая директория.

Для того, чтобы настройка заработала понадобится перезагрузить компьютер.
-=end=-

Т.е. ответ, что однозначный ответ сеществует тоже считается недействительным?

Файл DLL – компонент динамически подключаемой библиотеки, чьи элементы используют практически все программы. Библиотека DLL файлов расположена в корневой папке системы. Компоненты должны быть все в наличии, иметь цифровую подпись, правильно работать и быть актуальными по версии. Если одно из требований не соблюдено, при запуске программы пользователь получит информационное уведомление: ошибка DLL. Неисправность свидетельствует о том, что отсутствует DLL файл, поврежден или устарел.

Как установить DLL файл

Чтобы программы, приложения и игры снова начали работать, необходимо установить вручную недостающие компоненты библиотеки. Просто поместить файл в папку недостаточно ─ нужно знать как их зарегистрировать.

Помещение и регистрация файлов библиотеки

Перед тем как установить DLL файл на Windows 7,8,10, их нужно скачать, причем точно под разрядность системы.

Давайте определим, какая разрядность у Вашей системы (если вы точно знаете, может пропустить этот шаг)

Шаг 1. Кликаем правой кнопкой мыши по "Мой компьютер" и выбираем "Свойства"


Шаг 2. В открывшемся окне, мы может прочитать свойства компьютера, версию операционной системы и её разрядность 32 (х86) или 64 бит. В нашем случаи стоит 64-разрядная операционная система Windows 10.


·

Шаг 3. После скачивания файлов их нужно поместить в корневую папку, зарегистрировать

для х32 (х86) систем компонент необходимо заменить или поместить в папку C:\Windows\System32;

для х64 необходимо выполнить замену или переместить в папку C:\Windows\ SysWOW64;

Шаг 4. Файл нужно зарегистрировать в системе.

Сделать это можно, открыв командную строку комбинацией «Win» + «R», или нажать «Пуск» и «Выполнить»;

в открывшемся окне ввести через пробел следующее: regsvr32 имя файла.dll – где, «regsvr32» ─ команда для регистрации, а «имя файла.dll» – полное имя вставленного компонента;


или же можно прописать расположение файла вручную - regsvr32.exe + путь к файлу


Шаг 5. Нажмите "ОК", и перезагрузите компьютер, и новые параметры вступят в силу.

Сразу хочется отметить, что при регистрации возможны появления ошибок. Например: "Не удалось загрузить модуль". Обычно они возникают по 3 причинам

Второй способ регистрации

Шаг 1. Зарегистрировать файл можно с помощью командой строки, которую нужно запустить от имени администратора.

Шаг 2. Пишем команду regsvr32.exe + путь к файлу и жмём "Enter"


Как установить и зарегистрировать библиотеку DLL в Windows

Поиск библиотеки

Поиск библиотеки

Где скачать библиотеки

Заветные DLL файлы можно получить из разных источников. Желательно поискать их на официальном сайте производителя или программы. Если за время эксплуатации обновилась версия софта, желательно его скачать и провести переустановку. Вместе с ней установятся и новейшие версии библиотек. Если же сайт программы не работает или отсутствуют обновления, на помощь придут профильные сайты с коллекциями этих самых файлов dll. Достаточно ввести в поисковую строку сайта название библиотеки, и вы получите прямую ссылку для скачивания. Перед проведением регистрационных действий обязателен прогон актуальными антивирусными базами. Для этого нужно навести на скачанный файл правой кнопкой мыши и выбрать опцию проверки антивирусом. Если файл чистый – смело устанавливайте. Среди популярных хранилищ:

Скачивание недостающей библиотеки

При скачивании файлов обращайте внимание на разрядность и версию операционной системы. Узнать их можно в меню «Мой компьютер» в Windows 7 или на вкладке Компьютер Проводника в Windows 10. Для вызова сведений нажмите правой кнопкой мыши или тачпада. В выпавшем контекстном меню нажать уже левой кнопкой пункт «О системе». Неправильно подобранная библиотека будет функционировать с ошибками или перестанет запускаться вовсе.

Место установки изменить нельзя

После скачивания правильной версии ее необходимо установить в системную корневую папку. Ее название зависит от разрядности операционной системы. Для 32-разрядых систем это C:/Windows/System32, а для 64-разрядных – C:/Windows/SysWOW64. На компьютере могут присутствовать обе папки. У каждой из них есть свой регистратор библиотек. При регистрации файлов нужно открывать правильный. Всего же способ регистрации существует 3.

Место установки библиотеки

Заключается в вызове регистратора regsvr.exe комбинацией этих клавиш. Откроется строка «Выполнить», куда нужно вписать такую команду: regsvr32.exe путь_к_файлу_dll. Желательно указывать и путь к regsvr32, чтобы не вызывать путаницу.

ВАЖНО. У 64-разрядных операционных систем два файла regsvr32.exe – и в System32 и в SysWOW64. Они совершенно разные, нужно это учитывать. Файл регистратора для 64 разрядов находится в папке System32!

Выполнение команды

Командная строка

Запускать ее нужно в режиме Администратора. В открывшемся окошке уже будет отсылка к папке System32, поэтому без лишних прелюдий нужно указать путь к нужному регистратору через пробел и отступив следующий пробел, прописать полный путь к нужной библиотеке. Завершив ввод необходимо нажать Enter. Командная строка может закрыться, сменившись окном о статусе результата.

Ручная регистрация

Для этого нужно выделить только что установленный или замененный файл dll правой кнопкой мышки и выберите опцию открытия с помощью. В предложенном меню нужно вручную или из предложенного списка выбрать нужный regsvr32.

Как зарегистрировать DLL в Windows 10 и Windows 11

Среди частых вопросов пользователей, особенно после того, как они сталкиваются с тем, что какая-то из библиотек DLL отсутствует в Windows 10, Windows 11 или других версиях системы — как зарегистрировать DLL в соответствующей версии ОС.

В этой инструкции подробно о способах регистрации библиотек DLL в Windows x64 и x86 (32-бит) с помощью regsvr32.exe (и кратко о regasm.exe), о возможных нюансах и проблемах, которые могут возникнуть в процессе.

Дальнейшие шаги описаны в предположении, что DLL, которую нужно зарегистрировать, уже находится в нужном расположении: папке C:\Windows\System32, C:\Windows\SysWOW64 или, в некоторых случаях — отдельных папках программ, к которой относится соответствующая библиотека, например, для 1С — C:\Program Files\1cv8\номер_версии\bin (или Program Files x86 в случае 32-битной версии).

Прежде чем приступить к регистрации библиотеки, учитывайте следующие моменты:

  • В x64 версиях Windows 64-битные DLL хранятся в System32, а 32-битные — в SysWOW64 (у некоторых начинающих пользователей бывает обратное предположение исходя из имён папок).
  • Файлы DLL x64 и x86 (32-бит) — это разные файлы. И если прямого указания на разрядность в месте загрузки файла нет, то чаще это 32-битный файл (что не мешает ему работать в x64 системе), но это не всегда так.
  • Для регистрации библиотеки DLL используется системный инструмент regsvr32.exe, который также доступен в двух версиях, которые лежат в папках System32 и SysWOW64 (в случае 64-битных систем). По умолчанию при описываемых далее действиях запускается x64 версия.
  • 32-битным программам и играм (по умолчанию устанавливаются в Program Files x86 в 32-битных системах) для работы нужны 32-битные DLL, не зависимо от разрядности Windows.

Сам процесс регистрации в общем случае состоит из следующих шагов:

Ошибка регистрации regsvr32 точка входа DllRegisterServer не найдена

Почему не удается зарегистрировать DLL

Ошибка при регистрации с помощью regsvr32 вида «Точка входа DllRegisterServer не найдена» говорит о том, что эта библиотека DLL не поддерживает регистрацию описанным методом. Можно попробовать использовать вариант команды:

но с большой вероятностью и это не поможет.

У большинства домашних пользователей такая проблема возникает при регистрации файлов DLL для игр и программ, часто не вполне лицензионных, которые сообщили, что нужный файл DLL не обнаружен или отсутствует. Причем сами библиотеки DLL обычно скачаны со сторонних сайтов (и чаще всего имеют имена начинающиеся с «vc», «msvc» или «d3d»). А решение, как правило, простое — выяснить, частью какого набора компонентов является эта DLL и установить эти компоненты с помощью их собственного установщика. Более подробно проблема и подходы к решению описаны в инструкции Точка входа DllRegisterServer не найдена — причины и возможные решения.

Видео

Надеюсь, цель достигнута, а количество вопросов, связанных с регистрацией DLL в Windows, уменьшилось.

Читайте также: