Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Вопрос по DLL   Найти похожие ветки 

 
_sulent   (2004-11-30 09:02) [0]

Приветсвую, может быть вопрос не по конференции, но решил обратиться сюда.
Возникла такая проблема, что-то не могу понять. создаю DLL из программы гружу ее, вроде загружается, но стоит мне только убить ее, все хана... выдает ошибку, что мол что-то с памятью моей не то! В общем ошибка обращения к памяти. Что может быть такое?
причем если я его не убиваю этот Handle, то при закрытии программы опять такая ошибка появляется!
делаю так:

   
LibHandle := LoadLibrary(pChar(ExtractFilePath(Application.ExeName)+"DLL\Reports\"+SR.Name));
   index := FindNext(SR);
   if LibHandle > 32 then begin
     SetLength(LibHandles, length(LibHandles)+1);
     @Tproc := getProcAddress(LibHandles[length(LibHandles)-1], "describe_report");
     Tproc(List);
     RepList.Items.Add(List.Strings[1]);
   end;
   FreeLibrary(LibHandle);


 
Digitman ©   (2004-11-30 09:09) [1]

у тебя ошибка в самой DLL


 
KSergey ©   (2004-11-30 09:13) [2]

SahreMem, похоже, как всегда отсутствует


 
_sulent   (2004-11-30 09:26) [3]

ShareMem у меня как раз присутсвует, а сама DLL нормально работает, никаких проблем нет... проверял запуская саму программу, работает нормально...


 
TUser ©   (2004-11-30 09:35) [4]

И все-таки, код dll"ки покажи.


 
Verg ©   (2004-11-30 09:44) [5]

Несколько вопросиков:


> LibHandle := LoadLibrary(pChar(ExtractFilePath(Application.ExeName)+"DLL\Reports\"+SR.Name));
>    index := FindNext(SR);
>    if LibHandle > 32 then begin // В чем смысл сравнения ?
>      SetLength(LibHandles, length(LibHandles)+1); // Массив расширен, но LibHandle  туда не вписан
>      @Tproc := getProcAddress(LibHandles[length(LibHandles)-1], // В какой библиотеке ты ищешь процедуру ?
> "describe_report");
>      Tproc(List);
>      RepList.Items.Add(List.Strings[1]);
>    end;
>    FreeLibrary(LibHandle);


 
_sulent   (2004-11-30 10:50) [6]

Там это я просто экспериментировал, а по-идее у меня все было так:

index := FindFirst(pChar(ExtractFilePath(Application.ExeName)+"DLL\Reports\*.dll",faAnyFile, SR);
while index=0 do begin
LibHandle := LoadLibrary(pChar(ExtractFilePath(Application.ExeName)+"DLL\Reports\"+SR.Name));
if LibHandle > 32 then begin
 @Tproc := getProcAddress(LibHandle, "describe_report");
 TProc(List);
end;
end;

Что-то типа того



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

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

Наверх




Память: 0.48 MB
Время: 0.023 c
8-1093890137
Ландграф Павел
2004-08-30 22:22
2004.12.12
чтение формата RealAudio


1-1101551535
Артем Владимирович
2004-11-27 13:32
2004.12.12
Как стереть самого себя


14-1101281444
Vlad Oshin
2004-11-24 10:30
2004.12.12
Просветите, экономисты, если времени не жалко


4-1099165516
S@shka
2004-10-30 23:45
2004.12.12
Создание и завершение потока


3-1100436082
metallic
2004-11-14 15:41
2004.12.12
Ексель и делфи