Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизВопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c