DLL

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: DLL

Kolinus » 09 ноя 2004, 17:42

понятно.
Спасибо

Eugie » 09 ноя 2004, 17:38

Kolinus, при выгрузке DLL ты теряешь доступ к коду, реализущему соотв.виртуальную функцию. Сама-то vtable остается при объекте, только указатели на методы в ней становятся инвалидными.

Romeo » 08 ноя 2004, 20:14

Отследи в дебагере таблицу виртуальных методов, если подозрения подтвердятся и она окажется битой - выгружай DLL тогда, когда объект уже не нужен.

Kolinus » 08 ноя 2004, 20:07

Access violation
В общем прокунсультировался еще с парой человек сказали что скорее всего фишка в том что при выгрузке длл разрушается виртуальная таблицп вызовов функций для данного объекта.
Есть соображения ?

Romeo » 08 ноя 2004, 19:39

Какой exception именно?

DLL

Kolinus » 08 ноя 2004, 13:21

Доброгго времени суток.
Вопрос:
//main.cpp
class A
{
int a();
virtual void b();
}

//dll.cpp
class B : public A
{
void b();
}

из главного приложения загружаю длл. вызываю функцию, которая возвращает мне указатель на объект класса B
выгружаю длл, не удаляя возвращенный объект.
после этого
из приложения вызываю
b->a() - все работает
b->b() - эксепшн.
В чем проблема ?

Вернуться к началу