| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Импортирование методов DLL |
| Автор: altarasjuk 3.6.2003, 16:26 | ||
| Всем привет! Ситуация такова: есть DLL. Из неё импортируются функции. Но проблема в том, что имя DLL (путь) до запуска exe не известно.
Относительные пути не пойдут. Как это нужно импортировать в таком случае? |
| Автор: <Spawn> 3.6.2003, 17:10 |
| Как так неизвестно? Ты уж определись где она будет лежать или скажи более точно причину, почему неизвестен путь. |
| Автор: eof 3.6.2003, 17:38 |
| <Spawn> Ну например имя библиотеки и путь может передаваться при запуске программы в виде параметров, или указываться в настройках (в одном из клиентбанков видел такой диалог, он назывался "путь к бизнеслогике"), вариантов довольно много... |
| Автор: altarasjuk 3.6.2003, 17:39 |
| Причина такова: Это значение будет браться из реестра, куда его записует другая программа. А эта программа может находиться в произвольном месте (но стоять она будет точно). |
| Автор: altarasjuk 3.6.2003, 17:40 |
| eof полностью согласен |
| Автор: <Spawn> 3.6.2003, 17:42 |
| А ты прочитать это значение реестра не можешь? А если можешь, то в чем тогда проблема? |
| Автор: altarasjuk 3.6.2003, 17:46 |
| Я ем сорри Вопрос такой как динамически подставлять значения вместо 'C:\......\......\.....dll'? |
| Автор: eof 3.6.2003, 17:48 |
| как подгрузить dll во время выполнения проги. |
| Автор: <Spawn> 3.6.2003, 17:50 | ||
Что то я не совсем пойму. Но, если ты можешь прочесть данные реестра, то подгружаешь ДЛЛ при помощи LoadLibrary (SafeLoadLibrary) и извлекаешь нужные тебе функции. |
| Автор: eof 3.6.2003, 17:53 | ||
только что нашел в helpe... долго искал |
| Автор: altarasjuk 3.6.2003, 17:54 |
| А можно подробнее по поводу SafeLoadLibrary? |
| Автор: <Spawn> 3.6.2003, 17:59 |
| То же самое что и LoadLibrary, но выполняет безопасную загрузку ДЛЛ. Safe and simple library loading. Unit SysUtils Category Package support routines Delphi syntax: On Windows: function SafeLoadLibrary(const Filename: string; ErrorMode: UINT = SEM_NOOPENFILEERRORBOX): HMODULE; On Linux: function SafeLoadLibrary(const FileName: string; Dummy: LongWord = 0): HMODULE; C++ syntax: On Windows: extern PACKAGE HMODULE __fastcall SafeLoadLibrary(const AnsiString Filename, unsigned ErrorMode = SEM_NOOPENFILEERRORBOX); On Linux: extern PACKAGE unsigned __fastcall SafeLoadLibrary(const AnsiString FileName, unsigned Dummy = 0); Description SafeLoadLibrary loads a Windows DLL or Linux shared object file, as specified by Filename. SafeLoadLibrary preserves the current FPU control word, preventing library initialization code from permanently overwriting precision and exception masks. |
| Автор: eof 3.6.2003, 18:01 |
| так они и перепечатали весь хелп |
| Автор: altarasjuk 3.6.2003, 18:02 |
| сенкю |
| Автор: altarasjuk 3.6.2003, 18:05 | ||
eof
Не надо издеваться - я уже 2 дня сижу без хелпа, пришлось убить |