2013-08-01 18 views
5

Moja aplikacja C# ulega awarii w tym oknie. Jest to aplikacja DirectX, która używa SharpDX.Jak debugować ten błąd C#?

Nie wiem nawet, od czego zacząć to debugować? Jakieś wskazówki?

enter image description here

kiedy włączyć debugowanie kodu natywnego, katastrofa wygląda następująco:

enter image description here

i stos jest:

ntdll.dll!77d1f8b1()  
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
ntdll.dll!77d1f8b1()  
KernelBase.dll!7658149d() 
kernel32.dll!75c51194()  
kernel32.dll!75c51194()  
ntdll.dll!77d5b459()  
ntdll.dll!77d5b42b()  
ntdll.dll!77d5b3ce()  
ntdll.dll!77d10133()  
XAudio2_7.dll!61fb6b43()  
XAudio2_7.dll!61fa7fa2()  
XAudio2_7.dll!61fa79e9()  
XAudio2_7.dll!61fa8bb8()  
XAudio2_7.dll!61fa9492()  
[External Code] 
SharpDX.XAudio2.dll!SharpDX.XAudio2.Voice.DestroyVoice() Line 916 + 0x34 bytes C# 
+2

0xc0000005 oznacza naruszenie dostępu w określonym adresie (0x5fea4c9). Adres nie był wskaźnikiem zerowym (0x00000000), więc był to kod natywny próbujący uzyskać dostęp do części pamięci, która do niego nie należała, została już usunięta lub w inny sposób niedostępna. Czy sprawdziłeś listę "najczęstszych źródeł", które są wymienione? – nvoigt

+0

Czy używasz wskaźników? –

+0

@SriramSakthivel nie bezpośrednio, ale ta biblioteka directx, której używam, używa wskaźników. – clamp

Odpowiedz

1

Używasz niewłaściwej wersji pliku SharpDX.XAudio2.dll. Oznacza to, że na przykład aplikacja to x86 i próbuje użyć wersji x64. Musisz załadować odpowiednią wersję biblioteki dll.

+0

Jak możesz powiedzieć? – NWard

+0

Jest to typowy błąd podczas używania nieprawidłowej wersji pliku .dll –

Powiązane problemy