Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.09;
Скачать: 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 вся ветка

Текущий архив: 2006.04.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
3-1139765388
Evgenij_
2006-02-12 20:29
2006.04.09
Обновление даных в DBGrid e


11-1123867743
Riton
2005-08-12 21:29
2006.04.09
KOL + freelibrary


2-1142518530
Dust
2006-03-16 17:15
2006.04.09
комноненты Indi, что я делаю неправильно?


15-1142787736
Predator
2006-03-19 20:02
2006.04.09
Как зарабатывать деньги в инете ?


2-1143356756
VadimSpb
2006-03-26 11:05
2006.04.09
Подключение к MSSQL 2005 по сети