Absturz bei Aufruf View, Customize eines neuen "v120_xp" - MFC-Projekts auf Win 2003 Server (nicht XP)



  • Hallo,

    wenn man ein mit VS 2013 neu erstelltes MFC-Projekt nur auf Toolset "v120_xp" umstellt (sonst keine Änderungen im Source!) und buildet und dann die EXE unter Win 2003 Server ausführt und dann Menüpunkt "Ansicht", "Anpassen" bzw. "View","Customize" aufruft, dann stürzt die EXE ab, mit Win-Eventlog-Eintrag
    "
    Fehlgeschlagene Anwendung MFCApplication1.exe, Version 1.0.0.1, fehlgeschlagenes Modul comctl32.dll, Version 6.0.3790.5190, Fehleradresse 0x000076a3.
    "

    Wir konnten das inzwischen schon auf mehreren W2003-Servern reproduzieren, sowohl auf der Konsole als auch in RDP-Sessions;
    es scheint also nicht an einer "besonderen"/zerschossenen Windows-Installation zu liegen.
    Auf XP tritt das Problem dagegen nicht auf, sondern der Dialog erscheint ganz korrekt.

    Der Absturz tritt auf in mainfrm.cpp:
    "
    void CMainFrame::OnViewCustomize()
    {
    CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog(this, TRUE /* scan menus */);
    pDlgCust->EnableUserDefinedToolbars();
    pDlgCust->Create();
    }
    "
    wenn pDlgCust->Create(); aufgerufen wird.

    Auf XP und Win2003 Server werden unterschiedliche Versionen der
    comctl32.dll : XP 6.0.2900.6028 W2003: 6.0.3790.5190
    verwendet (mit procexp ermittelt, sind also die tatsächlich verwendeten DLLs, wenn man die exe startet; installiert sind auf beiden Rechnern noch eine ganze Reihe weiterer Versionen. Aber die von W2003 sind neuer; deshalb trifft auch die Vermutung, dass - weil es bei XP ein SP3 gab, bei W2003 aber nur ein SP2, nicht zu, dass eine auf W2003 ältere/inkompatible comctl32.dll das Problem hervorruft.

    Ich habe auch die og. comctl32.dll von XP, mit der es tut, auf den Win2003-Server kopiert und damit gestartet (und geprüft, dass wirklich die DLL von XP geladen war); das Problem tritt trotzdem auf, dh. es liegt nicht an der in Win2003 anderen comctl32.dll als in XP

    Kennt jemand dieses Problem und event. sogar eine Lösung ?
    Falls nicht, hat jemand einen Tipp für mich, wo ich sonst noch suchen könnte ?


  • Mod

    Evtl. stimmt was mit Deinen Manifesten nicht.
    In jedem Fall darfst Du die COMCTL32 nicht kopieren. Die sind OS abhängig.

    Wie sieht Dein Manifest aus?



  • Die Manifest-Einstellungen wurden gegenüber dem von VS generierten Ursprungs-Projekt nicht geändert; gefunden habe ich folgende vom MFC-Anwendungs-Assistenten generierten Manifest-bezogenen Einstellungen:

    /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Release\MFCApplication1.exe.intermediate.manifest"

    Ein externes Manifest existiert nicht.

    Was mich irritiert ist, dass nach Anlage des Projekts mit dem MFC-Anwendungs-Assistenten von VS2013 mit Default-Einstellungen (!, dh. es wurde schon im ersten Dialog des Assistenten "Fertigstellen" gewählt) ausser Umstellung auf Toolset "v120_xp" (sonst startet die EXE natürlich sowohl auf XP als auch Win 2003 Server gar nicht) definitiv NICHTS geändert wurde.

    Für mich sieht das so aus, als ob Toolset "v120_xp" nur mit XP, nicht aber mit Win 2003 Server kompatibel wäre..


Anmelden zum Antworten