Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  06:53[Войти] | [Зарегистрироваться]
Ответ на вопрос № 5587

20-02-2001 18:41
Как зарегистрировать DLL-ку???

Есть библиотека, которую используют несколько програм.
Постоянно
прописывать путь при открытии - не совсем удобно. Как
зарегистрировать
DLL-ку, чтобы можно было обратиться к ней только по имени?

Заранее всем благодарен.

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

11-08-2004 18:27
вообще-то существует
REGSVR32.EXE C:\WINDOWS\system32\mydll.dll

12-08-2003 18:17
loxi ebanie
 

23-02-2001 01:10
2 Алексей Вуколов
Да, конечно, я имел в виду динамически импортированные библиотеки. Видимо,
я не совсем четко сформулировал ответ, поскольку для своих библиотек
практически всегда пользуюсь динамическим импортом

22-02-2001 14:26
to MK:
И все-таки это не работает для статически импортированных DLL.
Для динамически импортированных - да.
Вот цитата из MSDN (переводить не буду).

This entry is effective for most general uses of the PATH environment
in an application. However, it will not be effective for any implicitly
linked DLLs that reside in a directory listed in the App Paths registry.
Implicitly linked DLLs are loaded before the task is fully created and
receives the modified PATH environment variable. At that time the system
uses the Kernel's environment. The DLL will not be found by the system
if it does not reside in the usual places where it may find DLLs.

А что касается Delphi, то там большая часть, в основном в каталоге
приложения находится, есть кое-что в system32, но в основном
используется динамический импорт. То же самое с MS Office, но там
еще и COM используется.

22-02-2001 03:12
2 Алексей Вуколов
Это не может не работать, поскольку в данном случае работа с большими
пакетами приложений, например MS Office, NU, Delphi, котрые разбрасывают
свои библиотеки в разные каталоги (без добавления этих путей в autoexec.bat)
была бы невозможной. Естественно,
это можно было бы обойти и другими способами, но то что способ функционален,
(по крайней мере у меня (Win95 OSR2)) это точно. И используются эти
пути именно для поиска DLL. Я сам использую этот способ в своих приложениях,
которые работают не только в Win95
Данные сведения в более подробном виде содержатся в книге
"Руководство программиста по Microsoft Windows 95", {Microsoft Press)
русское издание с исправлением допущенных в оригинале ошибок.

P.S. Возможно, у Вас опечатка, но ключ называется "App Paths"

21-02-2001 17:33
К стати, про запись в "App Path". Что-то оно не работает...
Возможно, что к переменной Path в окружении программы эти пути
добавляются, но при поиске DLL, похоже не используются. Либо у
меня что-то с руками. ;o)

А вот самый надежный способ все-таки, видимо, изменение
системной переменной окружения path.

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


21-02-2001 02:58
Несколько дополню предыдущие ответы.
Если Вам нужно, чтобы разделяемую DLL "видели" различные программы, то
нужно выполнить следующее:
В раздел HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs
добавить параметр DWORD с именем Вашей DLL и значением, указывающим
количество программ-пользователей данной DLL. Эти параметры обычно
устанавливаются и обновляются программами-инсталляторами и деинсталляторами;
возможно, Вам встречалась ситуация, когда деинсталлятор спрашивает
разрешения удалить разделяемую DLL - это означает, что уменьшенный
деинсталлятором счетчик пользователей данной DLL дошел до нуля. Кроме
того имя DLL должно указываться с полным путем (посмотрите для примера реестр).
Уточнение: HKEY_LOCAL_MACHINE можно заменить на HKEY_CURRENT_USER, а
параметры также могут быть двоичного и строкового типа, но подобные
вещи считаются некорректными, хотя и допустимы, кроме того в данном
разделе реестра можно писать и имена других файлов, например .exe:
получается своеобразная замена переменной PATH (кстати, ведь можно использовать и ее).
  Ну и в дополнение, если исполняемый файл и используемые им библиотеки
находятся в различных каталогах, то в раздел
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths
нужно добавить ключ, соответствующий имени Вашей программы без пути,
например BUZZER.EXE, и в этот ключ добавить:
1. значение по умолчанию, соответствующее полному имени файла (с путем)
2. строковый параметр Path, определяющий каталоги с файлами в формате
задания переменной Path в autoexec.bat
Теперь при запуске программы значение Path будет добавлено к системной
переменной Path (каламбур получился, но я надеюсь, что все понятно)
Обычно разделяемые файлы хранятся в каталоге, удовлетворяющем таким
условиям:
\Program Files\Common Files\<фирма> Shared\, например
C:\Program Files\Common Files\Borland Shared
P.S. Хотя решением данного вопроса является также ответ Алексея Вуколова,
я присоединяюсь к мнению Юрия Зотова и добавлю лишь, что при помещении
библиотек в каталог Windows\System можно легко забыть, что именно туда
добавлялось из-за исключительно большого количества файлов в этих каталогах.

20-02-2001 20:04
Не уверен, но, возможно ее надо прописать в реестре под ключом KnownDLLs.

И совершенно точно, что Вы можете положить свою разделяемую DLL куда угодно
(обычно для этого заводят свой подкаталог в Common Files), а в реестре
создать свой ключ Software\MySoft, который может указывать на все, что нужно
любой Вашей программе для работы с разделяемыми DLL и другими файлами.

Это общепринятый подход. Для примера посмотрите, как организован Common Files
и сделайте поиск его названия в реестре.

А кидать все подряд в системные каталоги считаю не лучшим тоном.

20-02-2001 19:44
Понятия "зарегистрировать DLL-ку" не существует, а для решения Вашей
проблемы достаточно положить библиотеку в каталог Windows\System или
Windows\System32 (зависит от ОС).

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Какой месяц идет после марта?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования