Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
Юрий_К   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.022 c
15-1142531039
Kerk
2006-03-16 20:43
2006.04.09
Перевод :)


1-1141469674
АРІ
2006-03-04 13:54
2006.04.09
Утечка памяти - OLE SysString (MemProof)


15-1142596089
без ника
2006-03-17 14:48
2006.04.09
Правила оформелния кода, названия компонентов


2-1143102218
wild_arg
2006-03-23 11:23
2006.04.09
5 знаков после запятой в DBGrid


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский