Форум: "Прочее";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
ВнизFreeLibrary... Что не так? Найти похожие ветки
← →
Knight © (2006-03-14 09:42) [0]Есть класс в нём подгружается библиотека и в Destroy лишь две строчки:
...
if (FLibHandle>32) and FreeLibrary(FLibHandle) then FLibHandle:=0;
inherited Destroy;
...
при выполнении второй строки вылетает Аксес Виалейшн, но если заремить первую, то, типа, ошибки нет.
← →
Sergey Masloff (2006-03-14 09:49) [1]а ты вообще читал что FreeLibrary возвращает? И в курсе чем дельфийский Boolean отличается от сишногоо BOOLа?
← →
Knight © (2006-03-14 09:53) [2]Оно и просто так FreeLibrary(FLibHandle) не работает... в смысле, библиотека (по логам) выгружается, а потом ошибка вылетает :(
← →
Lamer@fools.ua © (2006-03-14 09:55) [3]>FLibHandle>32
Где вы такую траву берёте?
HMODULE LoadLibrary(
LPCTSTR lpFileName
);
...
Return Values
If the function succeeds, the return value is a handle to the module.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
Ближе к сабджу:
>Есть класс в нём подгружается библиотека и в Destroy лишь две строчки
Ошибка в 17-й строке.
>>Sergey Masloff (14.03.06 09:49) [1]
>И в курсе чем дельфийский Boolean отличается от сишногоо BOOLа?
Вообще-то компилятор автоматически преобразует, вроде.
← →
Knight © (2006-03-14 09:59) [4]
> [3] Lamer@fools.ua © (14.03.06 09:55)
> >FLibHandle>32
>
> Где вы такую траву берёте?
Не критично... всё-равно оно МНОГО больше 32-ух...
← →
Reindeer Moss Eater © (2006-03-14 10:02) [5]Ошибка скорее всего в том, что после выгрузки библиотеки остаются невалидные ссылки на экспортируемые оттуда функции. Код класса на это не обращает внимания и вызывает уже несуществующие функции.
Либо ошибка внутри самой dll, если она самописная.
← →
Knight © (2006-03-14 10:05) [6]Функция есть, но она подключается динамически по одной процедуре... добавление нового экземпляра класса. Больше они ещё нигде не используются.
← →
Reindeer Moss Eater © (2006-03-14 10:07) [7]Используется. Иначе бы не было AV.
FreeLibrary не приводит к AV.
← →
Гаврила © (2006-03-14 10:42) [8]зайди по F7 внутрь inherited Destroy и посмотри, что происходит
← →
GrayFace © (2006-03-14 11:12) [9]Sergey Masloff (14.03.06 09:49) [1]
И в курсе чем дельфийский Boolean отличается от сишногоо BOOLа?
По идее, тип этот в Delphi есть, а значит должен полностью поддерживаться.
P.S. Ошибка указана еще в [3], даже номер строки, где она находится.
← →
Sergey Masloff (2006-03-14 11:16) [10]GrayFace © (14.03.06 11:12) [9]
Да? А на фига тогда ByteBool, WordBool, LongBool? Просто чтобы было? Я думаю в Борланде за строки кода лишних денег не платят чтобы просто так вводить ненужных типов.
← →
Reindeer Moss Eater © (2006-03-14 11:23) [11]Зачем заморачиваться с физическими булеанами, если имеешь дело с функцией из windows.pas ???
← →
Reindeer Moss Eater © (2006-03-14 11:26) [12]Тем более все и так ясно как день.
Парень использует динамический импорт, и при выгрузке библиотеки ничего не деинициализирует кроме хендла самой библиотеки.
И при вызове импортируемых функций не проверяет ссылки на них.
← →
Knight © (2006-03-14 11:27) [13]Ладно... буду рэмить всё подряд... хотя и ремить-то собственно ещё нечего... Всем спасибо.
← →
Reindeer Moss Eater © (2006-03-14 11:34) [14]>буду рэмить всё подряд
Напиши 2 процедуры: InitLibrary и DeInitLibrary
В первой загрузка и инициализация переменных - указателей на имп. функции
Во второй - выгрузка библиотеки и установка в nil всех переменных - указателей на имп. функции. (Либо сброс глобального флага загруженности библиотеки)
Все вызовы импортируемых функций обертывай проверкой указателя на них на не nil или проверкой глобального флага.
← →
Knight © (2006-03-14 11:38) [15]
> [12] Reindeer Moss Eater © (14.03.06 11:26)
Нету там ещё ничего кроме хэндла... из dll используется лишь одна функция, но только один раз и то обнуляется сразу после использование там же где подключается...
← →
Reindeer Moss Eater © (2006-03-14 11:47) [16]Значит ошибон внутри самой библиотеки.
Она чья?
← →
Reindeer Moss Eater © (2006-03-14 11:52) [17]При статическом импорте ошибка есть?
Если есть, то ошибка в библиотеке.
Если нет, то то, что было выше.
← →
Knight © (2006-03-14 11:52) [18]Моя... :)
В ней тоже ещё ничего нет, просто скелетная вещь выдающая только одну функцию... вне этого класса работает нормально... ладно, не повторяйтесь, мысль ясна. Вечером перепишу с нуля :)
← →
Reindeer Moss Eater © (2006-03-14 11:55) [19]Соглашения о вызовах еще проверь.
← →
Игорь Шевченко © (2006-03-14 12:02) [20]
> Вечером перепишу с нуля :)
Вечером нас ожидает новая ветка.
← →
Харько © (2006-03-14 13:02) [21]
> >FLibHandle>32
>
> Где вы такую траву берёте?
>
Я тоже в некоторых проектах (не моих) видел такую проверку. Спрашиваю у разработчиков, что за хрень, говорят, в WinApi16 LoadLibrary возвращала код ошибки, и SUCC было при возврате значения >32
← →
Knight © (2006-03-14 13:16) [22]
> [21] Харько © (14.03.06 13:02)
> и SUCC было при возврате значения >32
А я уж думал, что мне это приснилось... :))
Но вот уточнения про WinApi16 там не было :(
← →
Сергей М. © (2006-03-14 13:18) [23]
> Knight © (14.03.06 09:42)
Win32Check(FreeLibrary(FLibHandle));
inherited;
← →
Knight © (2006-03-14 13:18) [24]
> [20] Игорь Шевченко © (14.03.06 12:02)
> Вечером нас ожидает новая ветка.
Игорь, давно вы стали флудером? :(
← →
Knight © (2006-03-15 13:05) [25]Нашёл проблему... стринг в dll-ке затесался туда где его быть не должно, по-крайней мере без ШарыМем :)
← →
Reindeer Moss Eater © (2006-03-15 13:08) [26]Про возможность такой ошибки у постоянного посетителя сайта видимо никто всерьез не подумал
← →
Sandman25 © (2006-03-15 13:10) [27]Reindeer Moss Eater © (15.03.06 13:08) [26]
Да, переоценили.
← →
Странник © (2006-03-15 14:00) [28]Sandman25 © (15.03.06 13:10) [27]
или недооценили...
← →
Knight © (2006-03-15 15:28) [29]И про старуху бывает.... :)))
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.013 c