Visual C++ 6 Projekt in VS-2003 konvertieren ??? Hilfe !!!



  • @All

    Also hab jetzt alle *.lib's aus VC6 besorgt, und meinem Project gesagt wo sie liegen...

    Jetz macht er mir Linker-Fehler ohne Ende...

    Wollt nur mal kurz Info geben, bin bei....

    thx



  • Joetempes schrieb:

    @All

    Also hab jetzt alle *.lib's aus VC6 besorgt, und meinem Project gesagt wo sie liegen...

    Macht man nicht 😉



  • sondern ???

    Mir reichts nehmlich bald, und dann lös ich das über VM-Ware mit VC 6 !



  • Wie schon gesagt wäre es mal sinnvoll, die Fehlermeldungen zu posten und mitzuteilen, ob dein Code irgendwelche sonstigen Besonderheiten aufweist, die eine Konvertierung erschweren würden.



  • Ich hatte auch schon das Problem hab mich dann entschlossen es zu lassen. Und mach nur neue Projekte in Visual Studio 2003. Die Konvertierung klappt da hinten und vorne net. Und ich hatte bei dem Projekt keine besonderen Bibos. Aber wenn ihr es versucht vorher BackUp machen, denn einaml konvertiert gehts nicht mehr zurück.



  • du hast noch immer nicht gesagt welche libs.
    Ich hatte damit nochnie probleme und alle meine hundete projektdateie konvertiert. sogar meine eigene DLL haben funktioniert.



  • @All

    Vielen Dank für Eure Mühen.
    Ich hab mir jetzt VM_Ware und VC6 rauf geknallt, das tut's nun auch...



  • Fragensteller schrieb:

    Ich hab ein Problem.

    FreundlicherHelfer schrieb:

    Wie äußert sich das Problem?

    Fragensteller schrieb:

    Hab jetzt ein paar Sachen probiert, aber es geht immer noch nicht, wer kann mir helfen?

    FreundlicherHelfer schrieb:

    Du hast immer noch nicht gesagt, worum es sich bei deinem Problem handelt

    Fragensteller schrieb:

    Danke für die Mühe, ich bin jetzt aus der Softwareentwicklungsbranche ausgestiegen und bin nur noch im Gartenbau tätig, damit hat sich das Problem erledigt

    😉



  • Also unter VM-Ware mit VC6 rockt --> kein Wunder !
    Befriedigt mich aber doch nicht!

    Folgende Lib:

    *ProgNameMFC fatal error LNK1104: Datei 'mfc42d.lib' kann nicht geöffnet werden

    Wenn ich diese aus VC6 besorge will er danach die nächste...

    Das kanns doch nicht sein oder?!

    PS: @All
    Sorry, für den WirrWarr von mir hier, soll nicht nochmal vorkommen !!!



  • Dass die mfc42d.lib im Visual Studio 7 nicht vorhanden ist, ist ja klar, da an ihre Stelle die mfc71d.lib bzw mfc71.lib tritt. Der Compilerdurchlauf scheint ja problemlos verlaufen zu sein, sonst würde wohl kein Linkerfehler ausgegeben werden.

    Hast du den Linker denn irgendwo explizit angewiesen, diese Datei dazuzulinken, also es entweder in den Projektoptionen eingetragen (Linker>Eingabe>Zusätzliche Abhängigkeiten) oder mit einer #pragma-Direktive?
    Eine Möglichkeit wäre auch, dass dir aus Versehen die afx.h vom Visual Studio 6 in dein Projekt gerutscht ist (entweder weil du sie in dein Projektverzeichnis kopiert hast oder ein Konflikt zwischen 2 nebeneinander installierten Visual Studio-Versionen besteht) und in dieser dann die #pragma-Direktive für mfc42d.lib befolgt wird.

    Vielleicht hilft dir ja diese Seite noch weiter, obwohl du ja keine syntaktischen Inkompatibilitäten in deinem Projekt zu haben scheinst.

    http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/vccore/html/vclrfatlcompatibilityissues.asp



  • @masterofx32

    Bis auf ein paar warnings funktioniert der Compilerdurchlauf, es ist wirklich "nur" der Linker.

    Den Linker hab ich in den Projecteigenschaften nicht speziell angewiesen die mfc42d.lib einzubinden, hab ich nach geschaut.

    Wenn Du von der afx.h sprichst meinst Du damit stdafx.h ? Die hab ich mitgenommen,
    aber da steht auch nichts von mfc42d.lib drin!

    Kannst Du mir das mit der #Pragma-Direktive erklären was Du damit meinst ?
    Denn es steht nichts, spezielles in Bezug auf die mfc42d.lib drin ?

    So das wärs hier erstmal mit den Ausschlüssen, vorab vielen Dank & ein schönes WeekEnd !!!



  • Du kannst den Linker auch über ein

    #pragma comment (lib, "halloballo.lib")
    

    anweisen, eine Bibliothek hinzuzulinken. Hast du innerhalb einer Datei deines Projekts solche Direktiven? Was genau steht denn in deiner stdafx.h drin?



  • Bindest du LIBS ein die noch mir VS 6 kompiliert wurden und die MFC verwenden?
    Das denke ich. Diese Problem hatte ich beim wechseln auch sodaß ich alle meine BIB. neu kompilieren musste.



  • @masterofx32

    Im Project gibt es keine solche Direktiven !

    Sdtafx.h sieht folgendermaßen aus:

    // stdafx.h : Include-Datei für Standard-System-Include-Dateien,
    //  oder projektspezifische Include-Dateien, die häufig benutzt, aber
    //      in unregelmäßigen Abständen geändert werden.
    //
    
    #if !defined(AFX_STDAFX_H__D96150E2_B14F_4057_AE13_0633BED82D4B__INCLUDED_)
    #define AFX_STDAFX_H__D96150E2_B14F_4057_AE13_0633BED82D4B__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    #define VC_EXTRALEAN		// Selten verwendete Teile der Windows-Header nicht einbinden
    
    #pragma warning (disable: 4788)	// ausschalten der warnung, dass ein bezeichner
    #pragma warning (disable: 4786)	//	länger als 255 zeichen ist. tritt auf bei stl
    
    #include <afxwin.h>         // MFC-Kern- und -Standardkomponenten
    #include <afxext.h>         // MFC-Erweiterungen
    #include <afxdisp.h>        // MFC Automatisierungsklassen
    #include <afxdtctl.h>		// MFC-Unterstützung für allgemeine Steuerelemente von Internet Explorer 4
    #ifndef _AFX_NO_AFXCMN_SUPPORT
    #include <afxcmn.h>			// MFC-Unterstützung für gängige Windows-Steuerelemente
    #endif // _AFX_NO_AFXCMN_SUPPORT
    
    #ifndef min
    #define min(a,b)            (((a) < (b)) ? (a) : (b))
    #endif
    
    #include <list>
    #include <vector>
    
    //#include <iostream.h>
    #include <afxmt.h>
    #include <afxtempl.h>
    #include <afx.h>
    #include <assert.h>
    #include <stdio.h>
    
    #include <conio.h>
    #include <afxdb.h>
    #include <tchar.h>
    #include <process.h>
    #include <math.h>
    
    // Includes für Programm
    #include <stdio.h>
    #include <stdlib.h>
    #include <tchar.h>
    #include <conio.h>
    #include <windows.h>
    
    /*
    #include "Base\DbgHelp.h"
    #include "Base\StaticThread.h"
    #include "Base\SimpleObj.h"
    #include "Base\RelTime.h"
    #include "Base\ShareMem.h"
    #include "Base\RegAccess.h"
    #include "Base\CommPort.h"
    
    //#include "Service\Service.h"
    */
    
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.
    
    #endif // !defined(AFX_STDAFX_H__D96150E2_B14F_4057_AE13_0633BED82D4B__INCLUDED_)
    

    @Unix-Tom
    Wie komplilierst Du Libs ???



  • Ich würde ja mal einen Rebuild All versuchen...



  • LIB-Dateien gehören zu DLL-Dateien und dienen dazu, das statische Linken/Importieren von Funktionen aus deiner DLL zu ermöglichen. Das Neukompilieren der LIB-Dateien kommt nur in Frage, falls du LIB-Dateien verwenden willst, die von einem anderen Compiler erzeugt worden sind. Bei den MFC-Libs kommt das aber nicht in Frage, da die alle mitgeliefert sind.

    Fakt ist, dass irgendwo in deinem Projekt angewiesen wird, die mfc42.lib dazuzulinken. Mir würden nur zwei Ursachen dafür einfallen:

    - Du hast in den Projekteinstellungen noch ein Überbleibsel. Schaue einfach mal mit Notepad in deine Projektdatei(.vcproj), ob sich da ein Hinweis auf die mfc42.lib findet.
    - Die Headerdateien, die du inkludierst stammen noch von Visual Studio 6 aus welchem Grund auch immer. Die richtige afx.h von Visual Studio 7 enthält diese Passage:

    #ifndef _UNICODE
    		#ifdef _DEBUG
    			#pragma comment(lib, "mfc71d.lib")
    			#pragma comment(lib, "mfcs71d.lib")
    		#else
    			#pragma comment(lib, "mfc71.lib")
    			#pragma comment(lib, "mfcs71.lib")
    		#endif
    	#else
    		#ifdef _DEBUG
    			#pragma comment(lib, "mfc71ud.lib")
    			#pragma comment(lib, "mfcs71ud.lib")
    		#else
    			#pragma comment(lib, "mfc71u.lib")
    			#pragma comment(lib, "mfcs71u.lib")
    		#endif
    	#endif
    


  • Also ich hab jetzt mal alle *.h, *.cpp und alle anderen Dateien nach "mfc42d.lib" durchsucht, in den Projecteinstellungen auch nochmal nach geschaut.
    Aber es ist nix zu finden !

    Kann es sein das in einer anderen LIB drin steht, linke diese oder jene LIB noch mit zu ???

    Und wenn ich den Code von Dir in meine sdtafx.h kopiere ändert sich leider auch nix!



  • Hmm,schwierige Sache. Du sagtest ja, dass du keine anderen LIBs verwendest, von daher ist es unwahrscheinlich, dass es da zum Konflikt kommt. Und die LIBs von VS7 werden sicherlich keine Referenzen auf die mfc42.lib enthalten. 😉

    Ich hab jetzt auch keine weiteren Ideen, da das aus der Ferne natürlich schwer zu beurteilen ist. Und dein Projekt wirst du ja wohl nicht veröffentlichen können, nehme ich an!? Aber vielleicht ist es dir ja möglich, eine Minimalversion deines Projektes ohne eigenen Quelltext zur Verfügung zu stellen, in dem der Fehler noch auftritt.



  • Meinen Tip schon ausprobiert?



  • masterofx32 schrieb:

    LIB-Dateien gehören zu DLL-Dateien und dienen dazu, das statische Linken/Importieren von Funktionen aus deiner DLL zu ermöglichen. Das Neukompilieren der LIB-Dateien kommt nur in Frage, falls du LIB-Dateien verwenden willst, die von einem anderen Compiler erzeugt worden sind. Bei den MFC-Libs kommt das aber nicht in Frage, da die alle mitgeliefert sind.

    Das ist so nicht richtig. DLL welche mit VS 6 erstellt und kompiliert worden sind und die gegen die MFC4.1 gelinken sind fordern auch die MFC4.1 DLL`s an.


Anmelden zum Antworten