Главная страница
    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.045 c
15-1153403889
icq
2006-07-20 17:58
2006.08.20
icq-клиент


2-1154421462
Nikss
2006-08-01 12:37
2006.08.20
.Net


2-1154421423
aKirill.INFO
2006-08-01 12:37
2006.08.20
pdf - > jpg


2-1154597818
Jimmy
2006-08-03 13:36
2006.08.20
Ошибка при открытии файла.


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