![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ДЛЛ-и, которых много.
Юрий_К © (2006-03-17 17:45:00)Использую ДЛЛ-и ( http://oi.stellent.com), которые парсят документы различных форматов. За каждый формат практически отвечает своя ДЛЛ. Инициализируется всё это дело процедурой DAInit. Сейчас все эти ДЛЛ-и свалены в директорию, где основная программа. Есть желание для этого создать отдельную директорию, куда эти ДЛЛ-и и положить. Что нужно сделать, чтобы эти ДЛЛ-и находились? Что-то прописать нужно в реестре, название этой директории к примеру, или ещё что возможно? Какие решения известны на эту тему?
Leonid Troyanovsky (2006-03-24 19:35:00) [1]
> Leonid Troyanovsky © (24.03.06 19:32) [9]
> Ну, и можно попробывать грузить сишную библиотеку
> путем LoadFileEx
Фу-ты, LoadLibraryEx. Sorry.
--
Regards, LVT.
Leonid Troyanovsky (2006-03-24 19:32:00) [2]
> Юрий_К (24.03.06 18:34) [8]
> То есть лично я не прописываю путь для каждой из 189 файлов
> от stellent. Я лишь подключаю два lib файла в проект и указываю
> в опциях VC6 путь диркектории include c файлами *.H, в которых
> декларируются прототипы функций. В них я не нашёл ничего,
> для указания точного пути для ДЛЛ-ей.
В XP/2k3 есть SetDllDirectory.
Ну, а на худой конец есть еще SetCurrentDirectory.
Во-всяком случае, это не хуже, чем хардкодить имена.
Ну, и можно попробывать грузить сишную библиотеку
путем LoadFileEx with LOAD_WITH_ALTERED_SEARCH_PATH,
указав полный путь к ней (ее нужно покласть в ту же
директорию, что и остальные).
--
Regards, LVT.
Юрий_К (2006-03-24 18:34:00) [3]Всё сложнее:
То есть лично я не прописываю путь для каждой из 189 файлов от stellent. Я лишь подключаю два lib файла в проект и указываю в опциях VC6 путь диркектории include c файлами *.H, в которых декларируются прототипы функций. В них я не нашёл ничего, для указания точного пути для ДЛЛ-ей.
Юрий_К (2006-03-24 18:26:00) [4]"Desdechado © (17.03.06 22:17) [4]
> НЕЛЬЗЯ надеяться
почему? их межно самому дополнять при старте программы, только смысла не вижу
проще линковать динамически"
Поподробнее нельзя ли? Не понял ответа.
Юрий_К (2006-03-24 18:23:00) [5]Всё сложнее:
http://forum.sources.ru/index.php?act=ST&f=4&t=137414
"
Использую ДЛЛ-и ( http://oi.stellent.com), которые парсят документы различных форматов. За каждый формат практически отвечает своя ДЛЛ. Сейчас все эти ДЛЛ-и свалены в директорию, где основная программа. Есть желание для этого создать отдельную директорию, куда эти ДЛЛ-и и положить. Что нужно сделать, чтобы эти ДЛЛ-и находились? Какие решения известны на эту тему?
Работа с этими ДЛЛ-ями ведётся через ДЛЛ, написанную на VC. А она уже используется программой, написанной на Delphi. Используются модули sccda.lib и sccca.lib от stellent и есть так же sccda.h и sccca.h, включаю их в проект. Попробовал мою ДЛЛ положить в ту отдельную директорию со всеми ДДЛ-ми от stellent и указываю в основной программе, где лежит моя ДЛЛ. При запуске программы сообщается, что динамически подключаемая sccda.dll не найдена.
В добавок из Хелпа
"
What You Need in Your Source Code
Any source code that uses this product should #include the file sccca.h (for Content Access) and/or sccta.h (for Text Access) and #define WINDOWS and WIN32. For example, a Windows NT application might have a source file with the following lines:
#define WINDOWS /* Will be automatically defined if your
compiler defines _WINDOWS */
#define WIN32
#include /* If using ContentAccess */
#include /* If using Text Access */
The developer’s application should be linked to the Content Access (and/or Text Access) and Data Access DLLs through the provided libraries (sccta.lib, SCCca.LIB and SCCDA.LIB).
"
"
tesseract (2006-03-17 22:22:00) [6]
> НЕЛЬЗЯ надеяться на веременные окружения при подключении
> библиотеки. Нужно указывать полный путь.
А кто отменил FileExists ?
Desdechado (2006-03-17 22:17:00) [7]> НЕЛЬЗЯ надеяться
почему? их межно самому дополнять при старте программы, только смысла не вижу
проще линковать динамически
Eraser (2006-03-17 18:54:00) [8]
> Юрий_К (17.03.06 18:49) [2]
НЕЛЬЗЯ надеяться на веременные окружения при подключении библиотеки. Нужно указывать полный путь.
Юрий_К (2006-03-17 18:49:00) [9]"Во-первых, можно полный путь к DLL указывать"
"Во-вторых - положить туда, куда переменная Path смотрит, например в %SystemRoot%\System32"
Допустим, остановимся на том, что кладём в собственную директорию, а не в системную. Как дополнить эту переменную Path программно? Это в реестре что изменить/дополнить следует?
А отдельно не существует какой функции, что программа должна смотреть и в такую-ту директорию ещё, если не нашла ДЛЛ-и?
Ega23 (2006-03-17 18:04:00) [10]Во-первых, можно полный путь к DLL указывать, а вычислить его - легче простово (если это поддиректория в основной директории проекта) - ExtractFilePath(ParamStr(0)+'DLL\'+Имя_DLL).
Во-вторых - положить туда, куда переменная Path смотрит, например в %SystemRoot%\System32