Access Violation
-
Servus,
ich bekomme beim Ausführen meines Progs, das eine seriellen Schnittstelle öffnet immer eine "Access Violation" Meldung. Vielleicht kann mir jemand helfen. Ich habe die windows.h inkludiert und in den Projekteinstellugen "MFC in einer statischen Bib verwenden" ausgewählt. Der Debugger zeigt immer auf die Zeile, wo ich NULL für das Template übergebe. Das habe ich aus dem MSDN Beispiel übernommen.
std::string dev_name = "COM4"; try{ my_Handle = CreateFile(dev_name.c_str(), GENERIC_READ | GENERIC_WRITE, 0, // exclusive access NULL, // no security OPEN_EXISTING, 0, // no overlapped I/O NULL); // null template } catch(std::ios_base::failure& f){ std::cout<<f.what()<<std::endl; } catch(exception& e){ cout<<e.what(); } catch(...){ cout<<"irgendwas gefangen!"<<endl; exit(0); }
Vielleicht sieht jemand von euch, wo der Fehler liegt. Der Compiler meckert nicht, auch keine Warnung oder so.
Vielen Dank
-
der Aufruf von CreateFile sieht in Ordnung aus. myHandle ist auch vom Typ HANDLE? Und wenn du direkt als Parameter "COM4" angibst? Vielleicht mag er ja aus irgendwelchen Gründen std::string nicht.
"COM4" wird auch noch nicht anderweitig benutzt?
-
my_handle ist vom Typ HANDLE. Das ändern von dev_name.c_str() nach "COM4" hat nichts gebracht. Nein der Port wird nicht genutzt.
Muss ich vielleicht was anderes als NULL beim Template übergeben. In der MSDN Doc steht, dass es bei Win95,98,Me ignoriert wird. Ich arbeite unter XP.Aber da bei den Beispielen keine Anmerkung ist, denke ich das es so passt. Bin mir aber nicht sicher.
-
Wo steht dieser Code denn? Nicht zufällig in einer Memberfunktion, die du über einen uninitialisierten oder einen Nullzeiger aufrufst?
-
danke für den tipp, der hat gepasst. hatte einen zeiger auf die Klasse RS232 definiert, der aber irgendwie fehlerhaft war.
Danke schön