Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Подключение библиотеки dll из другой папки в Delphi

Автор: alex0413
Дата сообщения: 13.12.2015 04:01
Есть отдельная папка в Temp. Туда при запуске программы с ресурсов распаковываются библиотеки ssleay32.dll и libeay32.dll для Synapse. Но никак не удается подключить их с той директории. Если только положить рядом с программой, то все работает без проблем. Путь указываю в LoadLibrary. Даже при использовании пути D:\***.dll все равно не работает. Что я делаю не так?
Автор: reenoip
Дата сообщения: 13.12.2015 07:33
alex0413, а пробовал своё приложение запускать от имени администратора?
Автор: KDPoid
Дата сообщения: 13.12.2015 08:41
alex0413,
смотрим

Цитата:

LoadLibrary
...
Return Value
If the function succeeds, the return value is a handle to the module.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Так может это... Посмотреть в GetLastError, что пошло не так ?
Прав нет, ошибка в пути или даже какие-нибудь загадочные ERROR_OUTOFMEMORY, ERROR_TOO_MANY_OPEN_FILES...
Автор: alex0413
Дата сообщения: 13.12.2015 15:17
KDPoid
Спасибо за помощь, уже ближе к разгадке
Почему-то одна библиотека не грузится, хотя по пути она есть...

126 - ERROR_MOD_NOT_FOUND

Добавлено:
reenoip
запуск от имени администратора не помог, да и не думаю что должен был помочь
Автор: Alexzzy
Дата сообщения: 13.12.2015 16:04
alex0413
Для начала запустите Process Explorer и посмотрите по какому пути идет обращение к библиотеке.
Автор: alex0413
Дата сообщения: 13.12.2015 16:48
Alexzzy
одна библиотека загрузилась, но в списке её не нашел. Не думаю что я там же найду библиотеку которая вообще не загрузилась. Может я не там смотрю? Выбираю процесс и View DLL`s (ctrl + d).
Автор: Alexzzy
Дата сообщения: 13.12.2015 17:09
alex0413
Извиняюсь, перепутал. Нужен Process Monitor. Включить Show File System Activity, а остальное отключить. Ненужные процессы можно в "Exclude" добавить.
Автор: alex0413
Дата сообщения: 13.12.2015 17:58
Alexzzy
посмотрел, и я так понял, что первая библиотека не грузится потому, что она во время загрузки начинает подгружать зависимые библиотеки по пути, где находится программа, вместо необходимого мне.

Добавлено:
Изменил рабочую папку программы с помощью SetCurrentDir(), теперь даже путь библиотекам не нужно указывать, они сами оттуда загружаются.

Всем спасибо за помощь! Проблема решена!

Страницы: 1

Предыдущая тема: Ошибка при переходе с Delphi 7 на XE8


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.