AV w bibliotece DLL

0

Witam,

mam dość dziwny problem:
W aplikacji głównej podczepiam dwie biblioteki DLL (obiektowe, wymiana informacji poprzez interfejsy). Jedna z tych bibliotek dodatkowo ładuje tę drugą DLL. Czyli wygląda to tak:
App -> DLL1, DLL2
DLL1 -> DLL2
Podczas zamykania programu, zwalniam wszystkie zasoby pierwszej DLLki, która zwalnia zasoby załadowanej drugiej biblioteki DLL.
W momencie zwalniania DLL2 dostaję AV, a konkretnie przy zwalniania interfejsu. Ten błąd to Invalid Pointer in ntdll.dll.

Nie ma chyba sensu wklejać kodu bo to za zlożone, może coś technicznie pominąłem ? Jestem pewien że wszystkie Handle są prawidłowe.

0

jak to zwalniasz interfejs???? Przecież interfejsu się nie zwalnia a jedynie przypisuje się mu nil a już on sam wie, kiedy się ma zwolnić!

0

no dokładnie. O ten skrót myślowy mi chodziło.

Chodzi o to że w DLL2 jest tworzony jakiś tam obiekt.
W aplikacji zwalniam DLL1, która robi nila interjefsowi i wywołuje się destruktor po stronie DLL2.
Następnie zwalniam DLL2 i tu zonk na zwalnianiu obiektu.

Wywaliłem zwalnianie DLL2 i się nie wywala (memlaków także brak więc chyba ok).

0

pokaż kod bo bez tego nic nie zdziałamy

0

Wywaliłem zwalnianie DLL2 i się nie wywala (memlaków także brak więc chyba ok).

  • ja bym celował że przyczyną AV było to że obiekt już nie istniał w momencie jego zwalniania, zresztą możesz sobie w Destruktorze dodać jakiś Showmessage(....) oraz w momencie zwalniania DLL2 i zobaczyc co sie wykona pierwsze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1