Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Внизстранное поведение LoadLibrary ... Найти похожие ветки
← →
vic_774N (2004-11-29 19:12) [0]Здравствуйте, мастера ...
Вот в чем проблема:
Код работает нормально. Но иногда, на определенном файле в точкеDLLHandle := LoadLibrary(PChar(FilePluginName));
происходит зависание. Приходится снимать приложение по трем кнопкам. В чем может быть проблема ? В другой программе этот же файл не вызывает зависания.
function GetPluginName(FilePluginName: string): string;
var
DLLHandle : THandle;
PluginName : array[0..255] of Char;
Ext : string;
_DefRootName : procedure(Name: PChar; maxlen : Integer); stdcall;
begin
Ext := LowerCase(ExtractFileExt(FilePluginName));
if Ext = ".wfx" then
begin
try
DLLHandle := LoadLibrary(PChar(FilePluginName));
try
_DefRootName := GetProcAddress(DLLHandle, "FsGetDefRootName");
if Assigned(_DefRootName) then
begin
_DefRootName(@PluginName, 256);
Result := PluginName;
end
else
Result := "Connect Plugin manually";
finally
FreeLibrary(DLLHandle);
end;
except
end;
end;
end;
пробовал использовать LoadLibraryEx ... тот же эффект
← →
Alexander Panov © (2004-11-29 22:49) [1]Для начала после DLLHandle := LoadLibrary попробуй проверять DLLHandle на равенство 0, а перед выполнением инициализируй DLLHandle := 0;
Да и неплохо бы показать код, который выполняется при инициализации библиотеки.
← →
Piter © (2004-11-30 00:08) [2]Alexander Panov © (29.11.04 22:49) [1]
Для начала после DLLHandle := LoadLibrary попробуй проверять DLLHandle на равенство 0
человек эе говорит о зависании... причем здесь проверка?
Да и неплохо бы показать код, который выполняется при инициализации библиотеки
а вот это да. Библиотека же не вернет управление, пока не выполнится DLLMain...
vic_774N (29.11.04 19:12)
ты уверен что зависание именно на строчке DLLHandle := LoadLibrary(PChar(FilePluginName)); ?
← →
Alexander Panov © (2004-11-30 00:48) [3]человек эе говорит о зависании... причем здесь проверка?
Даже если это ни при чем, проверку нужно делать обязательно.
← →
Alex_Petr © (2004-11-30 01:59) [4]LoadLibraryEx(PChar(FileName),0,DONT_RESOLVE_DLL_REFERENCES); ?
← →
vic_774N (2004-12-01 05:57) [5]to Alex_Petr: пробовал уже - аналогично.
to Alexander Panov: проблема то в том, что проверить нечего.
зависает именно при вызовеDLLHandle := LoadLibrary(PChar(FilePluginName));
и только на одном определенном файле, другие обрабатываются без проблем. Трассирую отладчиком Delphi.
И нет у меня исходника той DLL, просто известна функция и что от неё получаю.
← →
Alexander Panov © (2004-12-01 10:23) [6]vic_774N (01.12.04 5:57) [5]
зависает именно при вызове DLLHandle := LoadLibrary(PChar(FilePluginName)); и только на одном определенном файле
Тогда тут можно сказать только одно - проблема в этом файле DLL при загрузке которого виснет программа, а именно - в DLLEntryPoint.
Думаю, что ничем тут помочь нельзя...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.06 c