Problem z końcem programu

Podczas pisania aplikacji testującej AGE w DLL-ce zaobserwowałem coś czego bym się nigdy nie spodziewał. Po zakończeniu pętli głównej, wszystkie zasoby są uwalniane i AGE kończy swoją pracę jak należy. Przynajmniej teoretycznie. Problem pojawia się po zakończeniu tej pętli – program nie kończy działania!

Po potraktowaniu kodu debuggerem okazało się, że po wywołaniu ostatniego return 0; program jeszcze coś tam dalej wykonuje:

0040132C  add         esp,0Ch
0040132F  mov         dword ptr [mainret (403080h)],eax
00401334  cmp         dword ptr [managedapp (403074h)],ebx
0040133A  jne         $LN36 (401373h)
0040133C  push        eax 
0040133D  call        dword ptr [__imp__exit (40204Ch)]

Potem stoi i czeka nie wiem na co. Na ASMie się prawie wcale nie znam więc średnio mi to coś mówi.

Wiem tylko, że jeśli nie zainicjuję AGE to program zaczyna i kończy pracę normalnie. Wcześniej – przed skompilowaniem do DLL – nie miałem takich cudów, wie ktoś może co może być tego przyczyną?

//EDIT:

Dalsze kombinowania doprowadziły mnie do tego, że do Audiere jest odpowiedzialne za ten stan rzeczy. Jeśli nie stworzę urządzenia Audiere to wszystko jest ok i program kończy pracę normalnie w innym wypadku czeka nie wiadomo na co.

Prawdopodobnie winne jest tutaj zarządzanie pamięcią, które (jak się ostatnio dowiedziałem) podczas używania DLL jest zdecentralizowane ^^. Przypuszczam, że trzeba jakoś uwolnić urządzenie Audiere’a. Niestety podczas próby zwolnienia urządzenia program rzuca błąd 😐

Jeśli sobie z tym nie poradzę będę musiał użyć jakiejś innej biblioteki do dźwięku, ale wolałbym jednak pozostać przy Audiere.

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s