[erledigt] System.AccessViolationException bei mehreren #include "UI.h" (Windows Forms)



  • Hi,

    ich versuche gerade, ein Projekt etwas aufzuräumen, das heißt aus einer cpp-Datei mehrere zu machen. Doch da bin ich auf folgendes gestoßen:

    Die cpp-Dateien includen alle nur den stdafx.h Header. stdafx.h included dann die Windows Forms GUI. Doch wenn nun mehrere cpp-Dateien die stdafx.h includen, bekomme ich beim Schließen der Anwendung immer eine System.AccessViolationException. In der Windows Forms GUI.h Datei steht am Anfang ein #pragma once - und nun frage ich mich: Wo kommt die AccessViolationException her?

    Besten Dank,
    Martin



  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Nach http://msdn.microsoft.com/de-de/library/system.accessviolationexception.aspx scheint es kein Fehler von .Net an sich zu sein, sondern ein Fehler in C++.
    Steht denn in der AccessViolationException nicht ungefähr drin, WO die auftritt? WAS davor passierte?



  • Wenn ich den Prozess debugge, bekomme ich nur die Meldung

    "Eine nicht behandelte Ausnahme des Typs "System.AccessViolationException" ist in gen_RemoteControl.dll aufgetreten.

    Zusätzliche Informationen: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist."

    Klick auf "Weiter" beendet die Anwendung sofort, es passiert dann nix weiter. Klick auf "Unterbrechen" führt zu folgendem Dialog:

    "Es sind keine Symbole für Aufruflistenrahmen geladen. Der Quellcode kann nicht angezeigt werden."

    Klick auf "OK" zeigt: "Das Programm "[5028] test.exe: Verwaltet" wurde mit Code -1073741819 (0xc0000005) beendet."
    Klick auf "Disassembly anzeigen" öffnet sich in Visual Studio kurz ein Fenster mit "Disassembly kann nicht angezeigt werden. Dieser Ausdruck wurde noch nicht in systemeigenen Computercode übersetzt."

    Mir ist gerade aufgefallen, dass das Starten des Programmes auch manchmal mit einer TypeInitializationException fehlschlägt ?!



  • Ah tut mir Leid, eine CRITICAL_SECTION hatte ich im Header als static deklariert. Habe sie nun nicht static, aber extern gemacht und in einer cpp-Datei definiert. Nun funktioniert alles.


Log in to reply