Autor |
Beitrag |
georgeboy
      
Beiträge: 214
|
Verfasst: So 19.09.21 08:34
Hallo zusammen, ich möchte wissen ob Visual Studio 2008 Standard, und Visual Studio 2010 Professional, unter Windows 10 läuft. Ein C++ MFC Programm von mir lässt sich unter VS 2019 zwar compilieren, stürzt aber nach dem Starten ab. Bei VS 2008 Standard läuft es.
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: So 19.09.21 09:29
Ja, sie sollten auch unter Windows 10 laufen.
Aber möchtest du nicht den Fehler beheben? Was zeigt denn der Debugger an?
|
|
georgeboy 
      
Beiträge: 214
|
Verfasst: So 19.09.21 12:47
Die Fehlermeldung liefere ich noch nach, im folgenden der Code:
C++-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| file2 = fopen(DateiName,"r"); if ( file2 == NULL ) { file = fopen(DateiName, "w"); if ( file == NULL ) { AfxMessageBox("Fehler: Bei Dateien.txt: " + DateiName + " falsches Verzeichnis !"); LPO.LiParseCloseDateien(); return true; }; fprintf(file, "Neue Datei"); fclose(file); } else fclose(file2);
OpenDocumentFile(DateiName); |
Vielleicht sollte ich eine verbesserte Version von "fopen" verwenden.
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: So 19.09.21 15:28
Ja, warum überhaupt C-Funktionen, wenn du die MFC verwendest? Warum also nicht CFile?
Ist DateiName ein absoluter Pfad oder ein relativer (denn dann ist es abhängig vom aktuellen Arbeitsverzeichnis)?
|
|
georgeboy 
      
Beiträge: 214
|
Verfasst: Mo 20.09.21 07:35
Ich habe schon vieles versucht, das Problem mit OpenDocumentFile wird auch im Internet beschrieben. Mein MFC Programm pflege ich mit VS 2008/2010 weiter, alles andere mit C# .NET. Danke Dir !
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mo 20.09.21 09:30
Welchen Fehler denn und kannst du den Link mal angeben?
|
|
georgeboy 
      
Beiträge: 214
|
Verfasst: Mo 20.09.21 13:46
Bei Google "Fehler bei OpenDocumentFile".
Vermutlich ist folgender Link, ein Beispiel dafür: Runtime error mfc120d.dll bei CWinApp::OpenDocumentFile
Moderiert von Th69: URL-Titel hinzugefügt.
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 20.09.21 14:20
Da geht es darum das in der Debug Variante der Runtime Assertions fliegen wenn man die Runtime nicht richtig initialisiert.
Das finde ich vollkommen korrekt. Wenn das mit einer älteren Runtime nicht knallt hatte eher die alte Runtime einen Fehler als die aktuellere Version.
Wenn das vergleichbar ist mit deiner Situation, passiert dir das auch mit der deploybaren echten Runtime?
Und 2.ten wenn das vergleichbar ist mit deiner Situation warum initialisierst du die Runtime nun dann nicht einfach richtig?
|
|
georgeboy 
      
Beiträge: 214
|
Verfasst: Mo 20.09.21 14:43
Darf ich als nicht Profi, ( ohne mich zu blamieren ) fragen, was das heisst, und wie man es macht, eine Runtime initialisieren ?
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 20.09.21 14:56
Fragen stellen ist der Sinn dieses Forums
Wie genau die Runtime vorbereitet werden muss sollte die Doku der entsprechenden Klasse/Methode dir sagen. Sozusagen die Vorbedingungen nennen bevor etwas benutzt werden kann.
Aus dem von dir verlinkten Forenbeitrag entnehme ich das die von die benutzte Klasse aus der OLE/COM Ecke stammt und daher das COM Subsystem von Windows initialisiert werden muss.
Das macht man per Aufruf der CoInitialize (bzw. am Ende per CoUnitialize) API.
Dem Forenbeitrag entnehme ich aber auch das das scheinbar in MFC durch afxOleInit() gekapselt ist und man diese am Anfang aufrufen sollte.
Wenn du diese Anwendung in irgendeiner alten Visual Studio Version angefangen hast wäre es möglicherweise hilfreich einfach mal in Visual Studio 2019 eine neue leere MFC App anzulegen und denn generierten Start/Initialisierungscode zu vergleichen was sich mittlerweile alles geändert hat und das passend in der eigentlichen Applikation nachziehen. Dann weißt du zumindest auch wo sich die Autoren der MFC gedacht haben von wo man das entsprechende aufrufen sollte.
Moderiert von Th69: Code-Tags hinzugefügt
|
|
georgeboy 
      
Beiträge: 214
|
Verfasst: Mo 20.09.21 16:37
Ich weiss nicht, wo ich AfxOleInit() hinschreiben soll, an verschiedenen Stellen in InitInstance, hängt das Programm.
Moderiert von Th69: Code-Tags hinzugefügt
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mo 20.09.21 16:50
Hast du noch einen Aufruf von CoInitialize(NULL) drin?
Das beste wäre wohl, du setzt mal ein neues MFC-Testprojekt auf und testest ersteinmal die Grundfunktionalität von OpenDocumentFile.
|
|
georgeboy 
      
Beiträge: 214
|
Verfasst: Mo 20.09.21 18:07
Ich habe die Migration nach VS2019, nochmal erstellt, und den Migrationstext genauer gelesen, diese Projekte ( bei mir C++ MFC von VS2008 ) werden nicht unterstützt. Bei einer Test-Neuanlage hat OpenDocumentFile funktioniert. Aber InitInstance sieht bei VS2019 vollkommen anders aus, da wären im ganzen Programm sehr viele Änderungen nötig. Gut dass VS2008 auch auf Windows 10 läuft. Jetzt habe ich Euch umsonst genervt. Sorry ...
Moderiert von Th69: Code-Tags hinzugefügt
|
|