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

Вниз

Статистическая загрузка dll   Найти похожие ветки 

 
FFx01 ©   (2006-07-31 22:42) [0]

В моё приложение встроен res файл- это dll"ка, в этом же приложении прописана загрузка это dll"ки, загружаю её я статистически.
При запуске приложения, функции загрузки из dll пытается загрузить еще не распакованную dll. В dll"ке прописаны 2 процедуры, которые и экспортируются, а затем в приложении
function fdll: Longint;external "date.dll" name "fdll"; загружаются.

Как мне правильно написать, что бы все было хорошо?.

p.s. вариант с res приложением в месте с dll отпадает.


 
Ketmar ©   (2006-07-31 23:40) [1]

написать драйвер IFS, который будет понимать ресурсы как файлы. или не маяться фигнёй, и грузить динамикой, предварительно распаковав во временный каталог.
ещё -- можно использоваться ntfs-потоки, но работать будет только на ntfs. %-) и если копироваться/архивировать/распаковывать программами, которые с потоками не знакомы, будет печально.


 
Джо ©   (2006-07-31 23:42) [2]

Так, маленькое замечание терминологического характера. Статическая. Статическая, а не "статистическая".  :)


 
tesseract ©   (2006-07-31 23:48) [3]

> функции загрузки из dll пытается загрузить еще не распакованную
> dll.


Естественно будут проблемы, типа пытаемся завести машину и жалуемся на отсутсвие бензина. ИМХО только динамическая загрузка спасёт партию.


 
GanibalLector ©   (2006-07-31 23:51) [4]

> или не маяться фигнёй, и грузить динамикой, предварительно распаковав во временный каталог.

Вот тебе на всякий случай

function SaveOtherDLL(var FileName:String):Boolean;
 var hRes,hResData:THandle;
     Mem:Pointer;
     hFile:Integer;
     Buff   : array [0..MAX_PATH] of Char;
begin
 Result:=False;
 if GetTempPath(SizeOf(Buff),Buff)<>0 then
 begin
   FileName:= StrPas(Buff)+LibName+".tmp";
   if FileExists(FileName) then
   Result:=True else
   begin
     hRes:=FindResource(hInstance,LibName,RT_RCDATA);
     if hRes<>0 then
     begin
       hResData:=LoadResource(HInstance,hRes);
       if hResData<>0 then
       begin
         Mem:=LockResource(hResData);
         hFile:=FileCreate(FileName);
         if hFile<>-1 then
         begin
           if FileWrite(hFile,Mem^,SizeOfResource(hInstance,hRes))<>-1 then
            Result:=True;
           FileClose(hFile);
         end;
       end;
     end;
   end;
 end;
end;
//



 
Шпиён   (2006-08-01 04:32) [5]

TFakeDll v1.1
Author: Dr.Golova
Последнее обновление: 06.06.02
TFakeDll - это Delphi объект, предназначенный для внедрения 32х битных библиотек (dll) в исполнимые файлы (Win32 PE Exe), написанные на Delphi. Иногда при написании программ приходится использовать библиотеки сторонних производителей (к примеру, библиотеки для работы с файловыми архивами), но не хочется таскать со своим проектом чужие модули. В этом случае, конечно, можно прилинковать эти dll к файлу и перед их использованием копировать их на диск, и уже оттуда подгружать. Это простой, но не слишком элегантный подход. TFakeDll позволяет (по крайней мере пробует) "прицепить" библиотеку к ехе файлу, и дает методы для его использования без промежуточного копирования на диск. Если быть кратким, то TFakeDll выполняет работу стандартного загрузчика Windows - этот объект копирует прилинкованную dll в память, настраивает ей импорт, релоки и предоставляет методы для работы с экспортируемыми функциями этой dll.
http://www.uinc.ru/scripts/load.cgi?files/dr.golova/TFakeDll.zip

Сам не пробовал -)


 
nt   (2006-08-01 08:33) [6]

> но не хочется таскать со своим проектом чужие модули. В
> этом случае, конечно, можно прилинковать эти dll к файлу
> и перед их использованием копировать их на диск,
...и они станут своими, ахха, щаз.



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

Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.04 c
1-1151969077
FireSonic
2006-07-04 03:24
2006.08.20
Chto-to menja gljuchit... pomogite vidti iz pike.. :)


2-1154158166
Батя
2006-07-29 11:29
2006.08.20
Реестр


15-1153917420
Alx_
2006-07-26 16:37
2006.08.20
Программирование и близкие


1-1151420017
Inco
2006-06-27 18:53
2006.08.20
Вырезать (Cut) файл в Clipboard


15-1153896310
гастрит
2006-07-26 10:45
2006.08.20
футбол





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский