Вниз
Скачать: CL | DM;

ДЛЛ-и, которых много.   Найти похожие ветки 

← →
Юрий_К   (2006-03-17 17:45) [0]

Использую ДЛЛ-и (http://oi.stellent.com), которые парсят документы различных форматов. За каждый формат практически отвечает  своя ДЛЛ. Инициализируется всё это дело процедурой DAInit. Сейчас все эти ДЛЛ-и свалены в директорию, где основная программа. Есть желание для этого создать отдельную директорию, куда эти ДЛЛ-и и положить. Что нужно сделать, чтобы эти ДЛЛ-и находились? Что-то прописать нужно в реестре, название этой директории к примеру, или ещё что возможно? Какие решения известны на эту тему?


← →
Ega23 ©   (2006-03-17 18:04) [1]

Во-первых, можно полный путь к DLL указывать, а вычислить его - легче простово (если это поддиректория в основной директории проекта) - ExtractFilePath(ParamStr(0)+"DLL\"+Имя_DLL).
Во-вторых - положить туда, куда переменная Path смотрит, например в %SystemRoot%\System32


← →
Юрий_К   (2006-03-17 18:49) [2]

"Во-первых, можно полный путь к DLL указывать"
"Во-вторых - положить туда, куда переменная Path смотрит, например в %SystemRoot%\System32"

Допустим, остановимся на том, что кладём в собственную директорию, а не в системную. Как дополнить эту переменную Path программно? Это в реестре что изменить/дополнить следует?

А отдельно не существует какой функции, что программа должна смотреть и в такую-ту директорию ещё, если не нашла ДЛЛ-и?


← →
Eraser ©   (2006-03-17 18:54) [3]


> Юрий_К   (17.03.06 18:49) [2]

НЕЛЬЗЯ надеяться на веременные окружения при подключении библиотеки. Нужно указывать полный путь.


← →
Desdechado ©   (2006-03-17 22:17) [4]

> НЕЛЬЗЯ надеяться
почему? их межно самому дополнять при старте программы, только смысла не вижу
проще линковать динамически


← →
tesseract ©   (2006-03-17 22:22) [5]


> НЕЛЬЗЯ надеяться на веременные окружения при подключении
> библиотеки. Нужно указывать полный путь.

А кто отменил FileExists ?


← →
Юрий_К   (2006-03-24 18:23) [6]

Всё сложнее:
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 <sccca.h> /* If using ContentAccess */
#include <sccta.h> /* 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).
"
"


← →
Юрий_К   (2006-03-24 18:26) [7]

"Desdechado ©   (17.03.06 22:17) [4]

> НЕЛЬЗЯ надеяться
почему? их межно самому дополнять при старте программы, только смысла не вижу
проще линковать динамически"

Поподробнее нельзя ли? Не понял ответа.


← →
Юрий_К   (2006-03-24 18:34) [8]

Всё сложнее:
То есть лично я не прописываю путь для каждой из 189 файлов от stellent. Я лишь подключаю два lib файла в проект и указываю в опциях VC6 путь диркектории include c файлами *.H, в которых декларируются прототипы функций. В них я не нашёл ничего, для указания точного пути для ДЛЛ-ей.


← →
Leonid Troyanovsky ©   (2006-03-24 19:32) [9]


> Юрий_К   (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.


← →
Leonid Troyanovsky ©   (2006-03-24 19:35) [10]


> Leonid Troyanovsky ©   (24.03.06 19:32) [9]

> Ну, и можно попробывать грузить сишную библиотеку
> путем LoadFileEx


Фу-ты, LoadLibraryEx. Sorry.

--
Regards, LVT.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.028 c
3-1139920807
Tornado
2006-02-14 15:40
2006.04.09
Помогите обработать событие


2-1142997974
soi
2006-03-22 06:26
2006.04.09
Программное изменение размера дочернего окна


9-1127930102
Conferno
2005-09-28 21:55
2006.04.09
Настройки качества текстур


3-1139495221
antoxa2005
2006-02-09 17:27
2006.04.09
Возможно ли получить значение св-ва "Описание" таблицы Access


15-1142933816
Fin
2006-03-21 12:36
2006.04.09
Обновление антивирусных баз у Symantec?




   Наверх