Release-Version läuft nur auf Entwicklungsrechner



  • Hallo,

    ich das Problem, dass die Release-Version meines Programms (VS 2010, Win32,statisch gelinkt) nur auf dem Entwicklungsrechner läuft. Auf allen anderen Rechnern verabschiedet es sich ohne Fehlermeldung, nur der Dialog "...hat ein Problem festgestellt und muß beendet werden..." erscheint. Wenn ich dynamisch linke ist ganz genau der gleiche Effekt. vcredistx86 ist installiert, dürfte aber bei statischem Linken keine Bedeutung haben. Was muß man noch mitgeben, damit die Release-Version auf dem Zielrechner startet?

    Mfg

    Wilfried



  • Vermutlich verwendest Du eine Funktion die nur in Win7 verfpgbar ist und führst es unter XP aus... starte es doch mal unter dem dependency walker...
    http://www.dependencywalker.com/



  • Vermutlich verwendest Du eine Funktion die nur in Win7 verfpgbar ist und führst es unter XP aus

    Eher nicht. Da kommt doch normalerweise eine Meldung, dass Einsprungspunkt xyz in DLL abc nicht gefunden wurde.

    @wilfried.h
    Hast du schon versucht ein paar Debug-Ausgaben beim Laden deines Programms einzubauen?



  • Ich habe keine Ahnung, was da nicht läuft, aber ein anderes Testprogramm läuft einwandfrei. Das defekte Programm ist auch das, wo ständig die ID-Probleme auftraten. Komisch nur, dass es auf der Entwicklungsmaschine läuft. Da es noch in der Anfangsphase der Entwicklung war (die Einarbeitung in die RibbonBar hat Zeit gekostet 😉 ), habe ich ein neues Projekt aufgesetzt und kopiere halt unter ständiger Kontrolle den Quelltext. Und da läuft zur Zeit alles.
    Aber wie gesagt, ich weis nicht, wo der Fehler lag, ich selber habe nicht irgendwie gehackt oder so.

    Mfg

    Wilfried



  • Nicht jeder Rechner reagiert gleich empfindlich auf diverse Probleme. Ist mir selber schon des öfteren aufgefallen. Um dem Täter auf die Spur zu kommen, solltest du entweder Debug-Messages einbauen oder gleich noch besser Remote-Debuggen.
    Geht auch mit der Release-Version, wenn du mit "Debug-Infos" kompilierst und die Optimierungen wegnimmst.



  • Ja, könnte man machen. Aber da das Programm in der Release-Version n u r auf der Entwicklungsmaschine lief, auf vier weiteren Rechnern aber nicht startete, habe ich halt ein neues Projekt gemacht und den Quelltext kopiert. Hat mich etwa zwei Stunden Arbeit gekostet (war eben gottseidank noch in der Anfangsphase 🙂 ) und nun läuft alles. Ich vermute mal, dass etwas mit der RibbonBar nicht stimmte, da es da immer wieder (siehe anderen Threat) unerklärliche ID-Probleme gab.

    Danke für die Bemühungen

    Wilfried



  • Hallo,

    ich würde gern explizit die unterstützte Windows-Version festlegen. Aber so recht komme ich nicht dahinter, wie das bei VC 2010 klappt. Über die targetver.h muß man wohl die winsdkver.h einbinden und dort die Version festlegen. Aber wo finde ich eine Liste, welches Windows welche Version ist?

    Danke schon mal im Voraus

    Wilfried



  • Zu den Windows-Versionen guck mal hier:

    http://msdn.microsoft.com/en-us/library/ms724429(VS.85).aspx


  • Mod

    Steht alles groß und breit in der MSDN:
    http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx



  • Danke für die Antworten. Damit weiß ich auch, warum das Programm nicht lief, voreingestellt (als default wohl so gedacht in VC 2010) war Windows 7.

    Mfg

    Wilfried



  • Hallo,

    ich kämpfe immer noch damit, dass mein Programm nur auf dem Entwicklungsrechner läuft. Mit Depends habe ich jetzt gefunden, dass auf dem Zielrechner
    efsadu.dll
    ieshims.dll
    wer.dll
    nicht gefunden werden. Auf meiner Entwicklungsmaschine befindet sich die efsadu.dll in Windows/system32, die anderen beiden gibt es auch nicht. Leider habe ich keine Ahnung, was sich hinter den DLL's verbirgt.

    Kann sein, dass meine Versionierung auf WindowsXP nicht richtig ist.
    Ich mache es so in der targetver.h

    // Durch Einbeziehen von"SDKDDKVer.h" wird die höchste verfügbare Windows-Plattform definiert.
    
    // Wenn Sie die Anwendung für eine frühere Windows-Plattform erstellen möchten, schließen Sie "WinSDKVer.h" ein, und
    // legen Sie das _WIN32_WINNT-Makro auf die zu unterstützende Plattform fest, bevor Sie "SDKDDKVer.h" einschließen.
    #include <WinSDKVer.h>
    #include <SDKDDKVer.h>
    

    In der winsdkver.h habe ich die höchste Plattform auf XP festgelegt.

    // This list contains the highest version constants supported by content in the Windows SDK.
    
    #define _WIN32_MAXVER           0x0501
    #define _WIN32_WINDOWS_MAXVER   0x0501
    #define NTDDI_MAXVER            0x0501
    #define _WIN32_IE_MAXVER        0x0800
    #define _WIN32_WINNT_MAXVER     0x0501
    #define WINVER_MAXVER           0x0501
    

    Was kann noch die Ursache sein, dass die Release-Version auf einem XP-Rechner nicht läuft?

    Mfg

    Wilfried



  • Wenn DLLs fehlen, die dein Programm benötigt, dann bekommst du normalerweise eine Fehlermeldung in der Form
    "Einsprungspunkt xy in Dll abc nicht gefunden".

    Da dein Programm aber abstürzt, liegt das Problem eher nicht an fehlenden Abhängigkeiten.

    Hast du es schon mal mit MessageBoxen während des Startens vom Programm versucht? Oder Remote-Debug?



  • Ich habe nun endlich das Problem lösen können. Ich habe in OnInitialUpdate() die View initialisiert und anschließend auf die RibbonBar-Elemente zugegriffen. Da ist wohl die RibbonBar, obwohl OnInitialUpdate() nach deren Erstellung aufgerufen wird, noch nicht richtig initialisiert, obwohl es sich nur um Millisekunden oder weniger handeln kann. Auf dem Entwicklungsrechner (schnelle Maschine) fiel das nicht auf. Die Firmenrechner schafften das nicht. Habe die Erst-Initialisierung in InitInstance() verlegt und nun gehts.

    Mfg

    Wilfried


Anmelden zum Antworten