Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизLoadLibrary не находит библиотеку! Найти похожие ветки
← →
Plt (2003-11-03 13:51) [0]...
LibName := "Temp.dll"
LoadLibrary(LibName);
...
Длл-на в упор не находится. Пробовал кидать в текущую директорию, не помогло.
← →
oomneeq (2003-11-03 13:55) [1]Возможно она и находится, но не грузится.
сделай
Win32Check(LoadLibrary(LibName));
сама скажет почему.
← →
Plt (2003-11-03 14:00) [2]GetLastError возвращает 126 "The specified module could not be found."
← →
panov (2003-11-03 14:06) [3]Полный код с определением переменных приводи.
← →
Anatoly Podgoretsky (2003-11-03 14:09) [4]Находится не там где ищется
← →
Plt (2003-11-03 14:12) [5]function CallDOAFrm( const LibName, ProcName : PChar; List : TStrings = nil;
const Param : PChar = nil): HRESULT;
var
l : THandle;
i : Integer;
s,s1,md5_str,vrs : string;
Lst : TStrings;
begin
if List = nil then
Lst := LoadedLibs
else
Lst := List;
i := Lst.IndexOfName(LibName);
if i = -1 then
l := LoadLibrary(LibName)
// вот здесь GetLastError возвращает 126
else
l := THandle(Lst.Objects[i]);
Result := -1;
if l <> 0 then begin
p := GetProcAddress(l,ProcName);
if @p <> nil then begin
SetLength(s,255);
GetModuleFileName(l,@s[1],255);
s1 := PChar(@s[1]);
V.FileName := s1;
if i = -1 then begin
try
md5_str:=GetMD5Digest(s1);
vrs:=LongVersionToString(V.FileLongVersion);
result:=CheckVersion(LibName,md5_str,vrs,Session);
s1 := LibName + "="+ s1 + " ("+md5_str+"), "+ vrs;
except
Application.ShowException(Exception.CreateFmt("? ?????????? %s ??? ??????? ??????.",[LibName]));
end;
Lst.AddObject(s1,TObject(l));
end;
p(Session, Param);
end
else begin
if i = -1 then FreeLibrary(l);
Application.ShowException(
Exception.CreateFmt("??????? %s ? ?????????? %s ?? ???????.",[ProcName,LibName]));
end;
end
else
Application.ShowException(Exception.CreateFmt("?????????? %s ?? ???????.",[LibName]));
end {CallDOAFrm};
← →
Plt (2003-11-03 14:20) [6]Находится там это 100%, старая версия длл-ны находится, а новая нет. В новой добавилось пару функций и фсё!
← →
panov (2003-11-03 15:03) [7]Попробуй расширение убрать в имени библиотеки.
К сожалению, D5 нет, и не на чем попробовать.
← →
Rouse_ (2003-11-03 15:08) [8]А ты проверял что находится в LibName на момент вызова l := LoadLibrary(LibName)?
Желаю успехов
← →
Skier (2003-11-03 15:08) [9]>Plt (03.11.03 13:51)
LibName := "TEMP.DLL";
LoadLibrary(LibName);
← →
Внук (2003-11-03 15:13) [10]Угу, регистр букв имеет значение
← →
panov (2003-11-03 15:19) [11]>Внук © (03.11.03 15:13) [10]
Угу, регистр букв имеет значение
У меня на компе не заметил влияния регистра букв в имени.
← →
Внук (2003-11-03 15:23) [12]>>panov © (03.11.03 15:19) [11]
А я заметил на BPL, думаю, что и для DLL имеет место. Хотя, возможно, это не так.
← →
Юрий Зотов (2003-11-03 15:47) [13]Под NT у меня такое было. Помогло указание в LoadLibrary полного имени DLL, вместе с путем и расширением. Регистр роли не сыграл.
← →
Plt (2003-11-03 15:54) [14]Заметил что в новой длл-не выгружалась Fr5.bpl. Когда вернул на место, длл-на билдится вместе с Fr5.bpl, работает все нормально.
Fr5.bpl находилась там где и длл-на.
← →
Внук (2003-11-03 16:01) [15]Мммм... А может, перепутал я? Может, это GetProcAddress чувствителен к регистру? Память девичья...
← →
Plt (2003-11-03 16:49) [16]Еще одну фигню обнаружил. Эта проблема возникает тока под NT4, на машинах с 2000 и ХР фсё работает.
← →
Юрий Федоров (2003-11-03 16:59) [17]GetProcAddress точно чувствителен
← →
Игорь Шевченко (2003-11-03 23:04) [18]
> Находится там это 100%, старая версия длл-ны находится,
> а новая нет. В новой добавилось пару функций и фсё!
Значит, новая DLL из-за пары добавленных функций не может загрузиться. И ошибка может быть именно в этих функциях, например, они вызывают какую-любо функцию из тех, которых нету в NT4, а есть в Win2k или в WinXP...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.03 c