← →
Borealis ( 2003-08-13 14:33 ) [0]
В каком порядке производится поиск нужной приложению dll?
Сначала в каталоге с exe, потом в системных виндовса, а потом в переменных path. Вроде я сам ответил на свой вопрос, но на самом деле это не полный ответ. Из этого ответа не понятно как получить путь к dll которая реально будет загружена.
Или может есть какая функция для этого? (но я её не нашёл)
ps. Вопрос получился немного сумбурным, но я честное слово переписывал его несколько раз — это лучший вариант 🙂
← →
Skier ( 2003-08-13 14:41 ) [1]
Цель-то конечная какая ?
← →
Dimka Maslov ( 2003-08-13 14:47 ) [2]
Используй функции LoadLibrary и GetProcAddress, а не статическую компоновку.
← →
Reindeer Moss Eater ( 2003-08-13 14:55 ) [3]
LoadLibrary тоже может не дать прямого ответа на вопрос какая библиотека загрузилась.
← →
clickmaker ( 2003-08-13 15:07 ) [4]
А GetModuleFileName на что?
Как скачать DLL, EXE, SYS и другие файлы для Windows 11/10
← →
AlexKniga ( 2003-08-13 15:11 ) [5]
Где ищутся DLL?
Ответ для 9х:
1) Каталог откуда запустился exe»шник
2) Текущий каталог
3) System32
4) System
5) Windows
6) %PATH%
Если в реестре для данной библиотеке прописан специальный путь поиска, то используется он.
Если в памяти уже есть библиотека с таким же именем, то используется она.
← →
Reindeer Moss Eater ( 2003-08-13 15:12 ) [6]
Если в реестре для данной библиотеке прописан специальный путь поиска, то используется он.
Я провёл маленький эксперимент — написал приложение которое требует dll которого не существует, и изменил переменные окружения «path» следующим образом: пользовательский «path»: «c:apath», а системный «path»: «d:apath». После запуска этого приложения естественно появляется сообщение об ощибке такого содержания:
TestPath.exe — Unable To Locate DLL
The dynamic link library kernel34.dll could not be found in the specified path E:ProgramsDelphi6ProjectsTestpath;.;E:WINNTSystem32;E:WINNTsy stem;E:WINNT;E:ProgramsFar1705;d:apath;c:apath.
Т.е. сначала ищет в текущем каталоге (потом в какойто точке[?] какая разница между текущим каталогом и точкой я не понял), потом в системных папках, потом в системной «path» и наконец в пользовательском «path».
И тут возникает сразу два вопроса:
1. Откуда берётся информация о расположении системных каталогов (ведь под другой версией винды они могут быть и другими).
2. Что это за странную информацию мне возвращает функция GetEnvironmentVariable : E:ProgramsDelphi5Bin;d:apath;c:apath?
Но это всё относится к «ручному» способу, а вот может есть какая стандартная функция?
← →
AlexKniga ( 2003-08-13 15:45 ) [11]
Borealis (13.08.03 15:36) [10]> пользовательский «path»: «c:apath», а системный «path»: «d:apath»
Как скачать opencl.dll и исправить ошибки при запуске игр и программ
.
← →
Reindeer Moss Eater ( 2003-08-13 15:51 ) [12]
1. Откуда берётся информация о расположении системных каталогов (ведь под другой версией винды они могут быть и другими).
Но это уже сильное отклонение от моего первоначального вопроса, наверно мой вопрос неправильно поняли поэтому я его немного перефразирую:
Если удалить нужные приложению dll»ки, то при его запуске появится сообщение которое я приводил выше, т.е. что я dll искал-искал по таким путям: «E:ProgramsDelphi6ProjectsTestpath;.;E:WINNTSystem32;E:WINNTs ystem;E:WINNT;E:ProgramsFar1705;d:apath;c:apath» но не нашёл.
Вопрос: как узнать вышеприведённую строку «поиска» (т.е. по каким путям приложение искало — точнее по каким искало бы). Фух. Ну проще я уже наверно не смогу объяснить свою проблему 🙁
← →
Reindeer Moss Eater ( 2003-08-13 16:27 ) [15]
т.е. по каким путям приложение искало — точнее по каким искало бы.
ps. Вы извините если я немного резко отвечаю, просто я немного нервничаю (скоро уже нужно показывать результат) и разговаривать на отвлечённые темы меня не тянет. 🙁
← →
Reindeer Moss Eater ( 2003-08-13 17:31 ) [21]
Теперь моё приложение должно найти все эти *.bpl и собрать в один каталог.
> 3. Посмотри в реестр на предмет каталогов поиска, зарегистрированных
> для того приложения.
?
> 4. Ищи в том же порядке, что и Windows
» том же порядке, что и Windows» Вот именно этого я и пытаюсь добиться. 🙁
← →
Reindeer Moss Eater ( 2003-08-13 17:48 ) [23]
Т.е. однозначного ответа не существует?
Существует
«том же порядке, что и Windows» Вот именно этого я и пытаюсь добиться. 🙁
То, чего ты добиваешься, находится в ЛЮБОЙ книжке по Delphi, в которой есть описание работы с DLL.
Там описана последовательность перебора системой каталогов прии загрузке бибиотек.
Я только что заметил что функция GetEnvironmentVariable возвращает «E:ProgramsDelphi5Bin;d:apath;c:apath», а path в командной строке: «E:ProgramsFar1705;d:apath;c:apath». Почему они так отличаются?
Вот буквально только что нашёл в инете такую ссылку: http://www.listsoft.ru/tips/456/
-=begin=-
Эта настройка может пригодиться, чтобы заставить программу, запускаемую по сети использовать локальные dll-ки, а также в тех случаях, когда первой загружается неправильная версия dll.
Запустите regedit и найдите ветвь
HKLMSYSTEMCurrentControlSetControlSession Manager
Создайте новый DWORD ключ с именем «SafeDllSearchMode» (или измените существующий) и установите его значение в 1, если вы хотите заставить Windows сначала искать библиотеки в System и Windows папках, или в 0, если вы хотите, чтобы сначала проверялась текущая директория.
Для того, чтобы настройка заработала понадобится перезагрузить компьютер.
-=end=-
Т.е. ответ, что однозначный ответ сеществует тоже считается недействительным?
> Я только что заметил что функция GetEnvironmentVariable
> возвращает «E:ProgramsDelphi5Bin;d:apath;c:apath»,
> а path в командной строке: «E:ProgramsFar1705;d:apath;c:apath».
> Почему они так отличаются?
>
> в командной строке FAR»A?
Понятно, этот вопрос снимается.
← →
Reindeer Moss Eater ( 2003-08-14 09:03 ) [28]
Т.е. ответ, что однозначный ответ сеществует тоже считается недействительным?
Ответ считается действительным. И ответ этот однозначный.
Источник: delphimaster.net
Просмотр библиотек DLL и исполняемых файлов в окне «Модули» (C#, C++, Visual Basic, F#)
Область применения:Visual Studio
Visual Studio для Mac
Visual Studio Code
В процессе отладки в Visual Studio окно Модули отображает список используемых приложением библиотек DLL и исполняемых файлов ( .exe), а также сведения о них.
Окно «Модули» недоступно при отладке SQL и скриптов.
Использование окна модулей
Чтобы открыть окно «Модули» во время отладки, выберите Отладка>Окна>Модули или нажмите клавиши CTRL+ALT+U.
По умолчанию модули в окне Модули упорядочены в порядке загрузки. Чтобы выполнить сортировку по любому столбцу окна, щелкните заголовок соответствующего столбца.
Загрузить символы
В столбце Состояние символов в окне Модули показано, для каких модулей загружены отладочные символы. Если здесь указано состояние Загрузка символов пропущена, Невозможно найти или открыть PDB-файл или Загрузка отключена параметром включения и исключения, вы можете загрузить символы вручную. Дополнительные сведения о загрузке и использовании символов см. в статье Указание файлов символов (.pdb) и исходных файлов.
Загрузка символов вручную
- В окне Модули щелкните правой кнопкой модуль, для которого не загружены символы.
- Выберите Сведения о загрузке символов, чтобы узнать, почему символы не были загружены.
- Щелкните Загрузить символы, чтобы загрузить символы вручную.
- Если символы не загружаются, выберите Параметры символов, чтобы открыть диалоговое окно Параметры и указать или изменить расположение для загрузки символов. Вы можете скачать символы с общедоступных серверов символов Майкрософт или других аналогичных серверов, а также загрузить их из локальной папки на компьютере. Дополнительные сведения см. в разделе Настройка расположения файлов символов и поведения при загрузке.
Изменение параметров поведения при загрузке символов
- В окне Модули щелкните правой кнопкой мыши любой модуль.
- Выберите Параметры символов.
- Выберите Загрузить все символы или выберите конкретные модули.
- Нажмите кнопку ОК. Изменения вступят в силу при следующем сеансе отладки.
Изменение поведения загрузки символов для конкретного модуля
- В окне Модули щелкните правой кнопкой мыши требуемый модуль.
- В контекстном меню установите или снимите флажок Всегда загружать автоматически. Изменения вступят в силу при следующем сеансе отладки.
См. также
- Прерывание выполнения
- Просмотр данных в отладчике
- Указание файлов символов (PDB) и файлов с исходным кодом
Источник: learn.microsoft.com
Как скачать файлы DLL, EXE и SYS Windows 10 разных версий
Чаще всего, если пользователь сталкивается с тем, что какие-то файлы DLL или другие отсутствуют в Windows 10, из-за чего не запускаются игры или программы, это означает, что не установлены необходимые компоненты, содержащие эти файлы и правильное решение — установить их вручную, о чем на remontka.pro есть несколько десятков статей (если вам требуется какой-то конкретный файл, можете ввести его имя в поиске на сайте: возможно, я уже описал ситуацию применительно к этому конкретному файлу).
Однако, случается так, что какой-то необходимый файл Windows 10, имеющийся в системе по умолчанию, был удален или поврежден, встроенное восстановление системных файлов не работает и требуется где-то скачать такой файл. Это можно сделать с помощью нового сервиса Winbindex (Windows Binaries Index), о котором и пойдет речь далее в статье.
Возможности загрузки оригинальных файлов Windows 10 в Winbindex
Сайт Winbindex представляет собой базу данных по всем системным (встроенным) файлам Windows 10 разных версий и позволяет получить подробную информацию об этих файлах, а файлы DLL, EXE и SYS можно скачать напрямую с сайта Майкрософт.
Порядок действий в Windows Binaries Index выглядит следующим образом:
- Зайдите на официальный сайт Winbindex https://m417z.com/winbindex/
- Введите имя нужного вам файла. Загрузка доступна только для DLL, EXE и SYS файлов. Просмотреть информацию можно и для других типов файлов.
- После этого откроется список файлов с этим именем для Windows 10 — их может быть разное количество для разных версий и разрядности Windows 10 (x64 и x86, что означает 32-бит). Из доступной информации о файлах — контрольная сумма SHA256, версия и размер. Если файл доступен для Windows 10 не самой последней версии, причина может быть в том, что он не обновлялся в новых версиях Windows 10.
- Для DLL, EXE и SYS есть возможность скачать файл, используя кнопку Download. Загрузка происходит напрямую с серверов Майкрософт (можно в этом убедиться, скопировав ссылку, на которую ведет кнопка). Если файл скачивается не с тем расширением и именем, что нужно, просто укажите нужное имя файла и расширение (в результате будет именно рабочая библиотека или исполняемый файл).
Как видите, всё очень просто и сервис позволяет быстро загрузить оригинальные файлы Windows 10 если по какой-либо причине они были утрачены.
Обратите внимание, если нажать по кнопке «Show» в предпоследнем столбце, вы сможете получить дополнительную информацию о файле. В частности, вас может заинтересовать пункт «Language» (язык) в разделе «WindowsVersions». Если там указано «neutral», этот файл можно без проблем использовать и в русскоязычной версии Windows 10.
Источник: remontka.pro