VisualStudio 6 und Vista



  • Hallo,
    ich benutze noch VisualStudio 6 (ist älter aber funktioniert). Nun haben wir einen Testrechner mit Windows Vista aufgestellt und ich habe unser Programm mal testen wollen. Ich habe nun das Problem, dass das Programm immer wieder hängen bleibt. Ich habe rausgefunden, dass es an der Funktion CreateThread liegt und das nur in der Release-Version. In der Debug-Version kommt kein Fehler. Die Funktion ist in der Klasse CWinThread kommt also von Windows. Ist nun meine VisualStudio Version einfach zu alt für Vista und es wurde etwas an den Schnittstellen bei Vista geändert? Was kann es noch für Ursachen haben? Es passiert nicht immer bei der Funktion. Die Funktion wird mehrmals aufgerufen im Programmablauf und das Programm bleibt immer an der selben Stelle hängen. 😕
    Bin für jeden Hinweis dankbar.

    Viele Grüße

    Ingo



  • IngoF schrieb:

    Ist nun meine VisualStudio Version einfach zu alt für Vista [...] ?

    Also eigentlich ist es schon zu alt für Xp 🤡 . Ladt Dir doch einfach die VC 2005 Express Edition (kostenlos) herunter. Bringt doch nix auf diesem alten Mist aufzubauen.


  • Mod

    Also grundsätzlich funktioniet auch ein Programm das unter VC6 erzeugt wird ohne Probleme auf Vista. Ich vermute, dass Du ein ganz allgemeines Problem mit multithreading hast.

    Wir haben noch Legacy Code laufen, der jetzt noch mal fit für Vista gemacht wurde. Der VC6 erzeugt Code und warum soll der auf Vista nicht mehr funktionieren.

    VC6 allerdings auf Vista einzusetzen würde ich unterlassen.



  • Unter WinXP funktioniert das Programm ja einwandfrei, auch als Release-Version. Wieso sollte es dann bei Vista Problem mit multithreading geben?



  • CodeFinder schrieb:

    IngoF schrieb:

    Ist nun meine VisualStudio Version einfach zu alt für Vista [...] ?

    Also eigentlich ist es schon zu alt für Xp 🤡 . Ladt Dir doch einfach die VC 2005 Express Edition (kostenlos) herunter. Bringt doch nix auf diesem alten Mist aufzubauen.

    Keine Alternative für den OP. Er verwendet die MFC.



  • dEUs schrieb:

    Keine Alternative für den OP. Er verwendet die MFC.

    Möchstest du mir damit sagen, dass ich mit neueren Versionen Probleme mit MFC bekomme? Welche Version würdest du mir empfehlen?



  • Nein, das nicht. Aber beim Visual C++ 2005 Express Edition wird keine MFC mitgeliefert. Bei den anderen Editionen natürlich schon.



  • Ach ja, @Mod:
    Bitte ins MFC-Forum verschieben.



  • Meinst du denn mit einer neueren Version habe ich keine Probleme mehr?



  • Kann ich nciht sagen. Höchstwahrscheinlich ist es in Bug in deinem Code.



  • Falls es ein Bug im Code ist, wieso taucht er denn dann erst bei Windows Vista auf? Unter Win98, 2000 und XP (SP1+SP2) gab es keine Probleme.
    Hast du auch ein Tip, wie ich den dann am besten lokalisieren könnte? Wie gesagt im Debugmodus taucht der Fehler ja nicht auf. Ich weiß nicht wie ich dann vorgehen soll. Mit Bildschirmausgaben habe ich immerhin schon die Funktion lokalisiert.



  • Du kannst auch in die Release-Version Debug-Informationen reinkompilieren und dann ganz normal debuggen.



  • OK, ich werde mal mein Glück versuchen, einen Fehler zu finden.



  • Wenn ich nun Debuginformationen in der Release-Version einstelle, bekomme ich wieder keine Fehler. Ich habe es dann soweit einschränken können, dass nur noch bei der Laufzeit-Bibliothek die Debug Version von Multithreaded-DLL verwendet wird. Wenn das eingestellt ist bekomme ich keine Fehler. Werden die nicht Debug Laufzeit Bibliotheken benutzt kommt der Fehler.
    Kann es Probleme geben oder Laufzeitverluste, wenn ich diese einfach Standardmäßig weiterbenutze?



  • Naja, das größte Problem dabei wird wohl sein, dass man glaube ich die Debug-Versionen der Laufzeit-Bibliothek lizenzrechtlich gar nicht mitliefern darf.

    vllt. verrät ja "WinDbg" oder so noch was...


  • Mod

    IngoF schrieb:

    Wenn ich nun Debuginformationen in der Release-Version einstelle, bekomme ich wieder keine Fehler. Ich habe es dann soweit einschränken können, dass nur noch bei der Laufzeit-Bibliothek die Debug Version von Multithreaded-DLL verwendet wird. Wenn das eingestellt ist bekomme ich keine Fehler. Werden die nicht Debug Laufzeit Bibliotheken benutzt kommt der Fehler.
    Kann es Probleme geben oder Laufzeitverluste, wenn ich diese einfach Standardmäßig weiterbenutze?

    Du hast es falsch verstanden! Du sollst nicht die Debug-DLLs verwenden, sondern Du sollst den Compiler umstellen, dass er Debug Infos erzeugt! Dito für den Linker.

    Du fragst warum Dein Programm unter Vista abschmiert. Ganz einfach. Dein Fehler ist abhängig z.B. vom Inhalt des Stacks. Bestimmte Stackbereche sind unter Vista anders initailsierst als unter XP. Normalerweise haben Dich solche "fremden" Bereihe ja auch nicht zu interessieren. Du hast aber einen Bug in der Software!
    Das hier die Ursache liegt zeigt alleine schon die Tatasche, dass Dein Debug Build läuft. Hier werden nämöich alle Stackbereiche der Funktion und auch alle Heap-Bereiche mit einem "no-Land"-Marker initialisiert.

    100% Dein Code ist Buggy!

    Erzeuge Debug Infos (nicht die Debug-Crt/Dlls verwenden!) Dann schau Dir an, wo die Applikation abschmiert!



  • Sobald ich Debug-Infos generiere schmiert das Programm nicht mehr ab, dass ist ja mein Problem.



  • Das würde mich sehr wundern. Du sollst in deinem Release-Build Debug-Infos mit reinkompilieren. D.h. vor allem, dass der define _DEBUG nicht gesetzt werden sein darf!



  • dEUs schrieb:

    CodeFinder schrieb:

    IngoF schrieb:

    Ist nun meine VisualStudio Version einfach zu alt für Vista [...] ?

    Also eigentlich ist es schon zu alt für Xp 🤡 . Ladt Dir doch einfach die VC 2005 Express Edition (kostenlos) herunter. Bringt doch nix auf diesem alten Mist aufzubauen.

    Keine Alternative für den OP. Er verwendet die MFC.

    Naja... dann könnte er es mit der WTL versuchen ➡ http://www.codeproject.com/wtl/WTLExpress.asp



  • Ich werde es jetzt mal mit dem VisualStudio 2005 versuchen.


Anmelden zum Antworten