Generic++ Library Compilierung



  • Wie sehen die 26 Fehler denn aus?

    Felix



  • Also, ich kann es heute abend mal posten, wenn ich wieder zu hause bin ...
    Danke soweit!



  • Win XP ist aus der NT-Reihe, die Unterschiede sollten eigentlich nicht SO groß sein, denke ich. Die Frage ist:

    - wie standardkonform ist der Compiler deiner IDE?
    - wie kompatibel ist er zum Borland Builder? Wenn das maketool irgendwelche Änderungen extra für den BCB macht kanns sein dass andere Compiler das nicht übersetzen können.



  • pumuckl schrieb:

    Win XP ist aus der NT-Reihe, die Unterschiede sollten eigentlich nicht SO groß sein, denke ich. Die Frage ist:

    Jo, das weiß ich - hätt'ja sein können ...

    pumuckl schrieb:

    - wie standardkonform ist der Compiler deiner IDE?
    - wie kompatibel ist er zum Borland Builder? Wenn das maketool irgendwelche Änderungen extra für den BCB macht kanns sein dass andere Compiler das nicht übersetzen können.

    Tjaa... um ehrlich zu sein, ich weiß nicht, wie sehr der "Turbo C++" C++-Standard konform ist - kann man die Konformität messen ? Nein scherz beseite - ich denke, da er ebenfalls von CodeGear ist und dem Builder in praktisch allen Belangen ähnelt, sollte er zu diesem zumindest sehr konform sein.



  • So jetzt hab ich mal alles rauskopiert:

    C:\gen3-5-3>cd win32
    
    C:\gen3-5-3\win32>maketool -cbb5 genmd50
    make -f makefile
    MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
            make /f lib.mak
    MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
            bcc32 -c -IC:\gen3-5-3\include  -v -Od -w -r- -k -y -vi- -a8 -b- -Ve -Vx
     -DNPOST -tWM -w-com -w-eff -w-pia -w-par -w-csu -w-aus -w-rch -w-8071 -w-8084 -
    w-8001 -w-8027 -DG_ANSILIB ..\..\..\src\path\gdir.cpp
    Borland C++ 5.82 für Win32 Copyright (c) 1993, 2005 Borland
    ..\..\..\src\path\gdir.cpp:
    Fehler E2092 C:\gen3-5-3\include\gstat.h 96: Speicherklasse 'inline' ist hier ni
    cht erlaubt
    Fehler E2139 C:\gen3-5-3\include\gstat.h 96: In Deklaration fehlt ;
    Fehler E2303 C:\gen3-5-3\include\gstat.h 153: Typname erwartet
    Fehler E2238 C:\gen3-5-3\include\gstat.h 153: Bezeichner 'G_Stat::_int64' mehrfa
    ch deklariert
    Fehler E2344 C:\gen3-5-3\include\gstat.h 96: 'G_Stat::_int64' bereits deklariert
    
    Fehler E2139 C:\gen3-5-3\include\gstat.h 153: In Deklaration fehlt ;
    Fehler E2312 C:\gen3-5-3\include\gstat.h 71: 'theSize' ist keine eindeutige Basi
    sklasse von 'G_Stat' in Funktion G_Stat::G_Stat()
    Fehler E2092 C:\gen3-5-3\include\gstat.h 175: Speicherklasse 'inline' ist hier n
    icht erlaubt
    Fehler E2141 C:\gen3-5-3\include\gstat.h 175: Fehler in der Deklarationssyntax
    Fehler E2303 C:\gen3-5-3\include\gunord.h 123: Typname erwartet
    Fehler E2275 C:\gen3-5-3\include\gunord.h 123: { erwartet
    Fehler E2428 C:\gen3-5-3\include\gunord.c 45: Templates müssen Klassen oder Funk
    tionen sein
    Fehler E2141 C:\gen3-5-3\include\gunord.c 45: Fehler in der Deklarationssyntax
    Fehler E2451 C:\gen3-5-3\include\gmap.h 224: Undefiniertes Symbol 'G_Assoc'
    Fehler E2275 C:\gen3-5-3\include\gmap.h 224: { erwartet
    Fehler E2451 ..\..\..\src\path\gdir.cpp 46: Undefiniertes Symbol 'G_Assoc'
    Fehler E2401 ..\..\..\src\path\gdir.cpp 46: Ungültige Template-Argumentliste
    Fehler E2395 ..\..\..\src\path\gdir.cpp 46: Zuviel Argumente an Template 'G_Map<
    K,V,IMP>' übergeben
    Fehler E2040 ..\..\..\src\path\gdir.cpp 46: Deklaration nicht ordnungsgemäß abge
    schlossen
    Fehler E2451 ..\..\..\src\path\gdir.cpp 48: Undefiniertes Symbol 'G_StatInfo'
    Fehler E2188 ..\..\..\src\path\gdir.cpp 48: Ausdruckssyntax
    Fehler E2299 ..\..\..\src\path\gdir.cpp 48: Template-Spezialisierung kann aus 'G
    _ThreadVar<T>' nicht generiert werden
    Fehler E2270 ..\..\..\src\path\gdir.cpp 48: > erwartet
    Fehler E2040 ..\..\..\src\path\gdir.cpp 48: Deklaration nicht ordnungsgemäß abge
    schlossen
    Fehler E2451 ..\..\..\src\path\gdir.cpp 53: Undefiniertes Symbol 'pMap' in Funkt
    ion fileLessThan(const G_String &,const G_String &)
    Fehler E2228 ..\..\..\src\path\gdir.cpp 53: Zu viele Fehlermeldungen oder Warnun
    gen in Funktion fileLessThan(const G_String &,const G_String &)
    *** 26 Fehler bei der Compilierung ***
    
    ** error 1 ** deleting gdir.obj
    
    ** error 1 ** deleting all
    

    Das passiert da...



  • pumuckl schrieb:

    - wie kompatibel ist er zum Borland Builder? Wenn das maketool irgendwelche Änderungen extra für den BCB macht kanns sein dass andere Compiler das nicht übersetzen können.

    Turbo C++ ist die Light-Version von C++Builder 2006; ähnlich wie die Express-Editionen von Microsoft. Der Compiler ist derselbe.

    @Floyd: Die Fehler sehen nicht danach aus, als wäre unzureichende Standardkonformität das Problem. Sieh dir doch einfach mal die Stellen an, über die der BCC stolpert - vielleicht hat er ja recht? 😉
    Andernfalls kannst du die Stellen ja mal posten.



  • ja, das wollte ich sowieso machen.. bin nur bis eben gerade nicht zu gekommen... 🙂



  • Okay, sämtliche Fehler in gstat.h konnten durch ein simples ersetzen von "_int64" durch "long long" behoben werden.

    Wo ich mir nicht sicher bin ist folgendes in gstat.cpp:

    LARGE_INTEGER li;    
    
    	li.LowPart = theFindData.nFileSizeLow;
    	li.HighPart = theFindData.nFileSizeHigh;
    	theSize = _int64(li.QuadPart);
    

    ich nehme mal an, die "_int64" hier ist eine typkonversion - ich ersetze durch (long long).

    Welchen fehler (der dann erst erscheint) ich nicht verstehe ist:

    int G_RegexParser::readInt(int &val)
    {
    	val = -1;
    
    	char buf[10];
    	int c, bpos = 0;
    
    	while (isdigit(c = getChar(false)))
    	{
    		buf[bpos++] = (char)c;
    		if (bpos >= 10)
    		{
    			error(SyntaxError);
    		}
    	}
    	if (bpos > 0)
    	{
    		buf[bpos] = 0;
    		val = atoi(buf);
    	}
    	else
    	{
    		error(SyntaxError);
    	}
    	return c;
    }
    
    Fehler E2268 ..\..\..\src\regex\greparse.cpp 170: Aufruf der undefinierten Funkt
    ion 'isdigit' in Funktion G_RegexParser::readInt(int &)
    Warnung W8013 ..\..\..\src\regex\greparse.cpp 172: Wahrscheinliche Verwendung vo
    n 'c' vor Definition in Funktion G_RegexParser::readInt(int &)
    Fehler E2268 ..\..\..\src\regex\greparse.cpp 181: Aufruf der undefinierten Funkt
    ion 'atoi' in Funktion G_RegexParser::readInt(int &)
    *** 2 Fehler bei der Compilierung ***
    

    Was soll "isdigit" denn sein ? das wird in keiner ähnlich klingenden Datei definiert - ist das so ein alter Kram, wie atoi ?(welches hier übrigens funktionieren sollte - mein tooltip-anzeige-debug sagt zumindest, dass er das (auch an der stelle da) kennt) 😃
    Wieso wird c hier wahrscheinlich vorher verwendet ? das übersteigt meine hobby C++ Kenntnisse... 😞



  • isdigit ist in <cctype> deklariert, atoi in <cstdlib>.
    Beide sind allerdings dem namespace std angehörig; vielleicht ist diese Bibliothek da etwas nachlässig.

    Die Warnung über die Benutzung von c dürfte eine Folge davon sein, daß der Compiler die Zeile mit isdigit nicht versteht, daher auch nicht analysiert, dennoch aber weiterzuarbeiten versucht.



  • Ihr seid super- Namespace spezifiziert und schon klappt es 😃 ... fast

    Warning: '5' not found in library
    Warning: 'genmp50' not found in library
    Warning: library was too large for page size, rebuilt with page size 512
    Warning: results are safe in file 'C:\libtmp0c.450'
    DOS-reported error: Permission denied
    renaming 'C:\gen3.LIB' to 'C:\gen3.BAK'
    
    ** error 1 ** deleting C:\gen3-5-3\win32.lib\bb5\genmp50.lib
    
    ** error 1 ** deleting all
    

    äh ja ... also dieses libtmp40c.450 existiert tatsächlich - damit kann ich ja aber vermutlich nix anfangen oder? was ich mit den anderen warnungen machen soll, weiß ich gar nicht ... gibts in WIn32(oder hier anscheinend DOS!?!) auch chmod ? wie wende ich das so, an, dass das DOS keinen Fehler meldet ?



  • Hey hilfe 😃 ! Keine Ideen mehr ? Eigeniniative scheiterte gerade mal wieder...



  • Mhh.. ok, ich hab die gen3.lib mal selbst in BAK umbenannt, dann kommt er einen schritt weiter, scheitert aber daran, dass eine "genmd50.lib" in "win32.lib\bb5" nicht existiert - es scheint so, als könne er diese datei (aus welchen gründen auch immer) nicht erzeugen - ich glaube damit siehts wohl schlecht aus...


Anmelden zum Antworten