Willkürliche Fehler beim Compilieren!



  • Hallo,

    ich habe in meinem Programm nur ein neues Formular erstellt und ein paar ADOQueries und DataSources, 2 DBLookupListBoxen und paar Buttons raufgepackt.
    Beim Compilieren bekomme ich nun lauter verschiedene Fehler.

    Z.B. den hier:

    [BCC32 Fataler Fehler] FrontPageEditor_XP.h(93482): F1004 Interner Compiler-Fehler at 0x7cd63b5 with base 0x7c90000

    aus der FrontPageEditor_XP.hpp, dabei habe ich keine Frontpage-Komponente oder ähnliches in meinem Programm 😕

    Oder diesmal diese Fehler:

    [BCC32 Fehler] Maskutils.hpp(31): E2401 Ungültige Template-Argumentliste
    [BCC32 Fehler] Maskutils.hpp(31): E2040 Deklaration nicht ordnungsgemäß abgeschlossen
    [BCC32 Fehler] Maskutils.hpp(53): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(53): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(54): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(54): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(55): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(55): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(56): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(56): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(57): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(57): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(58): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(58): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(59): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(59): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(60): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(60): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(61): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(61): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(62): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(62): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(63): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(63): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(64): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(64): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(65): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(65): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(66): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(66): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(67): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(67): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fehler] Maskutils.hpp(68): E2494 Nicht erkannter __declspec-Modifizierer
    [BCC32 Fehler] Maskutils.hpp(68): E2092 Speicherklasse 'extern' ist hier nicht erlaubt
    [BCC32 Fataler Fehler] Sqltimst.hpp(25): F1004 Interner Compiler-Fehler at 0x7ccad65 with base 0x7c90000
    [BCC32 Fehler] Schwerwiegender Fehler (Ausnahme von HRESULT: 0x8000FFFF (E_UNEXPECTED))

    aus der MaskUtils.hpp

    usw. usw.

    Hat eine eine Idee, wieso plötzlich solche wirren Fehler auftauchen? Ich habe mal eine 2 Monate ältere Version meines Programms compiliert und die läuft ohne Probleme ...



  • MichelM schrieb:

    Z.B. den hier:

    [BCC32 Fataler Fehler] FrontPageEditor_XP.h(93482): F1004 Interner Compiler-Fehler at 0x7cd63b5 with base 0x7c90000

    aus der FrontPageEditor_XP.hpp, dabei habe ich keine Frontpage-Komponente oder ähnliches in meinem Programm 😕

    Irgendeine Quelldatei wird die Datei schon einbinden. Ich glaube, du bekommst die #include-Kette, die zu diesem Header führt, angezeigt, wenn du in den Projektoptionen die "Erweiterten Fehlerinfos" aktivierst. Achja, welche C++Builder-Version benutzt du eigentlich?

    ICEs wie dieser treten bevorzugt dann auf, wenn der PCH korrumpiert ist. Wenn du C++Builder 2007 oder höher hast, wähle mal im Projektmanager-Kontextmenu "Bereinigen" und starte die IDE neu. Andernfalls lösche alle temporären Dateien im Projektausgabeverzeichnis (speziell *.pch und *.#??).

    MichelM schrieb:

    Oder diesmal diese Fehler: [...]

    Vermutlich Folgefehler.

    MichelM schrieb:

    Ich habe mal eine 2 Monate ältere Version meines Programms compiliert und die läuft ohne Probleme ...

    Dann geh doch in der Revisionshistory so lange schrittweise zurück, bis du eine Revision gefunden hast, die funktioniert, und dann schau nach, welche Änderung genau den Unterschied verursacht hat.

    Generell neigen die meist abartig großen Office-Typbibliotheken dazu, ältere Versionen von BCC hin und wieder zum Stolpern zu bringen.

    Möglichkeiten zum Workaround:
    - Du könntest versuchen, die Typbibliothek, die du benötigst, mit TLIBIMP auf der Kommandozeile für Delphi zu importieren (wenn du auch Delphi installiert hast, kannst du auch den Wizard dafür benutzen), dann die Delphi-Units zu deinem Projekt hinzuzufügen und die vom Delphi-Compiler generierten Header zu verwenden; mit denen kommt BCC meist besser klar.
    - Versuche mal, für die Datei, die die Typbibliotheks-Header einbindet, PCHs zu deaktivieren (-> "lokale Optionen" im Projektmanager).



  • habe den 2009er

    ich werde gleich mal die sachen ausprobieren!



  • das mit dem löschen der .pch und #. hat nicht geklappt. ich hatte alles gelöscht, lässt sich aber trotzdem nicht compilieren.
    das mit dem bereinigen und IDE neu starten hat auch nicht funktioniert!

    wie funktioniert das mit der revisionshistory? wo muss ich was anklicken?

    und wo finde ich in den projektoptionen die "fehlerinfos erweitern"?

    vielen dank
    michel



  • MichelM schrieb:

    wie funktioniert das mit der revisionshistory?

    Du hast doch sicher ein Versionskontrollsystem, also so etwas wie CVS, SVN, Mercurial oder Git.
    Ach, du benutzt gar keines? Dann wirds ja höchste Zeit.

    MichelM schrieb:

    und wo finde ich in den projektoptionen die "fehlerinfos erweitern"?

    "Projekt|Optionen...|C++-Compiler|Erweiterte Fehlerinfos". Völlig unmöglich, da von selbst draufzukommen 😉

    So, kurz zum weiteren Vorgehen. Es gibt im Wesentlichen zwei Möglichkeiten:

    • Du versuchst, das Problem zu umgehen. Zwei Optionen dafür habe ich im letzten Post genannt (TLIBIMP und das Deaktivieren des PCH).
    • Du versuchst, die Ursache des Problemes bzw. einen reproduzierbaren Testfall zu finden. Dabei will ich gerne weiter behilflich sein, denn nur so kann sichergestellt werden, daß der Fehler in einer künftigen Version von C++Builder behoben werden wird. Dazu wäre es zunächst sinnvoll, herauszufinden, wo genau der Fehler auftaucht. Du könntest dazu das Build-Protokoll des Compilers begutachten, das im Meldungsfenster unter dem Tab "Ausgabe" angezeigt wird. Einfacher wäre es sicherlich, wenn du folgendes tust:
    • Du öffnest ein Kommandozeilenfenster, rufst darin einmal "rsvars.bat" auf und navigierst in dein Projektverzeichnis (wo die *.cbproj-Datei liegt).
    • Dort tippst du folgendes ein:
    msbuild /t:Clean
    msbuild /t:Make > build.log
    

    Das startet einen Kommandozeilen-Build deines Projektes und leitet die Ausgabe in die Datei build.log um.

    • Schließlich postest du den Inhalt von build.log hier, so daß wir morgen mit dem nächsten Schritt fortfahren können.


  • Das mit der pch löschen hatte ich schon versucht; ich hatte auch einmal alle temporären Dateien gelöscht. eine neue pch-Datei wird aber nicht mehr erstellt beim compilierversuch.

    die "erweiterten fehlerinfos" hab ich einfach übersehen, habe alles eigentlich durchgeschaut gehabt. bin auch nun wieder zum blöd, das deaktivieren des PCHs zu finden 😕

    Hier der Inhalt der biuld.log:

    Microsoft (R)-Buildmodul, Version 2.0.50727.4016
    [Microsoft .NET Framework, Version 2.0.50727.4200]
    Copyright (C) Microsoft Corporation 2005. Alle Rechte vorbehalten.

    Der Buildvorgang wurde um 19.06.2010 10:07:18 gestartet.
    __________________________________________________
    Projekt C:\MICHEL\ARBEIT\Projekte (Laufende)\Rekon 290110 - Builder 2009 -- V1\Rekon\QuellcodeDB\RekonProjekt.cbproj (Make-Ziel(e)):

    MakeObjs-Ziel:
    _CppDepCheck-Ziel:
    Modified: RekonProjekt.cpp;RekonMainFrm.cpp;ReguliererStammFrm.cpp;SBStammFrm.cpp;AuftragNeuFrm.cpp;AuftragBearbeitenFrm.cpp;global.cpp;DatenModulFrm.cpp;SasNeuFrm.cpp;AsBearbeitenFrm.cpp;RasNeuFrm.cpp;AsTerminFrm.cpp;BetPartNeuFrm.cpp;LeistManFrm.cpp;RechnungErstellenFrm.cpp;LoginFrm.cpp;AnwenderStammFrm.cpp;AGStammFrm.cpp;LeistPosStammFrm.cpp;RechnungUebersichtFrm.cpp;OptionEinstellungenFrm.cpp;SucheFrm.cpp;HonorarFrm.cpp;OptionenEingabeFrm.cpp;RechnungskontrolleFrm.cpp;HonorarAusnahmeFrm.cpp
    CppCompile-Ziel:
    _CppCoreCompile-Ziel:
    C:\Program Files (x86)\CodeGear\RAD Studio\6.0\bin\bcc32.exe -D_DEBUG;_RTLDLL;NO_STRICT;;_RTLDLL;NO_STRICT; -I"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\dinkumware";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\vcl";"..\..\..\..\AppData\Local\{65B1AA84-C1DF-4A2E-A28C-E242BD7DE4B3}\msofficebcbwin32\C0AE1552\A4BD7ADD";E:\Entwicklung\Rekon;E:\Entwicklung\Beispielcode\WordTestBernd;"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\ObjRepos\Cpp";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\Indy10";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\RaveReports\Lib" -y -c -k -tWM -tW -Hc -C8 -oDebug_Build\RekonProjekt.obj -w-par -Od -v -vi- -H=Debug_Build\RekonProjekt.pch -H RekonProjekt.cpp
    _CppCoreCompile-Ziel:
    C:\Program Files (x86)\CodeGear\RAD Studio\6.0\bin\bcc32.exe -D_DEBUG;_RTLDLL;NO_STRICT;;_RTLDLL;NO_STRICT; -I"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\dinkumware";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\vcl";"..\..\..\..\AppData\Local\{65B1AA84-C1DF-4A2E-A28C-E242BD7DE4B3}\msofficebcbwin32\C0AE1552\A4BD7ADD";E:\Entwicklung\Rekon;E:\Entwicklung\Beispielcode\WordTestBernd;"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\ObjRepos\Cpp";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\Indy10";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\RaveReports\Lib" -y -c -k -tWM -tW -Hc -C8 -oDebug_Build\RekonMainFrm.obj -w-par -Od -v -vi- -H=Debug_Build\RekonProjekt.pch -H RekonMainFrm.cpp
    C:\Program Files (x86)\CodeGear\RAD Studio\6.0\Bin\CodeGear.Cpp.Targets(1086,3): error MSB6006: "bcc32" wurde mit Code 1 beendet.
    Erstellen des _CppCoreCompile-Ziels in Projekt RekonProjekt.cbproj beendet - Fehler beim Erstellen.
    Erstellen des CppCompile-Ziels in Projekt RekonProjekt.cbproj beendet - Fehler beim Erstellen.
    Erstellen des MakeObjs-Ziels in Projekt RekonProjekt.cbproj beendet - Fehler beim Erstellen.

    Erstellen des Projekts RekonProjekt.cbproj beendet - Fehler beim Erstellen.

    Fehler beim Buildvorgang.
    C:\Program Files (x86)\CodeGear\RAD Studio\6.0\Bin\CodeGear.Cpp.Targets(1086,3): error MSB6006: "bcc32" wurde mit Code 1 beendet.
    0 Warnung(en)
    1 Fehler

    Vergangene Zeit 00:00:34.81



  • Okay - offenbar tritt der Fehler beim Compilieren von RekonMainForm.cpp auf. Zunächst würde mich interessieren, wie das Verzeichnis
    "..\..\..\..\AppData\Local\{65B1AA84-C1DF-4A2E-A28C-E242BD7DE4B3}\msofficebcbwin32\C0AE1552\A4BD7ADD" in deinen Include-Pfad kommt?
    Das ist ein temporäres Verzeichnis des C++Builder-Installers und hat da nun wirklich gar nichts verloren.

    Wenn du wissen willst, wieso RekonMainForm.cpp den FrontPageEditor_XP.h-Header einbindet, führe aus dem Projektverzeichnis folgendes
    Kommando auf der Kommandozeile aus:

    "C:\Program Files (x86)\CodeGear\RAD Studio\6.0\bin\cpp32.exe" -Ss -Sg -Sx -D_DEBUG;_RTLDLL;NO_STRICT;;_RTLDLL;NO_STRICT; -I"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\dinkumware";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\vcl";"..\..\..\..\AppData\Local\{65B1AA84-C1DF-4A2E-A28C-E242BD7DE4B3}\msofficebcbwin32\C0AE1552\A4BD7ADD";E:\Entwicklung\Rekon;E:\Entwicklung\Beispielcode\WordTestBernd;"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\ObjRepos\Cpp";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\Indy10";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\RaveReports\Lib" -y -c -k -tWM -tW -Hc -C8 -oDebug_Build\RekonMainFrm.obj -w-par -Od -v -vi- -H=Debug_Build\RekonProjekt.pch -H RekonMainFrm.cpp
    

    Worauf es hier ankommt, ist "cpp32 -Ss -Sg -Sx"; mehr Informationen dazu liefert "cpp32 -h -S":

    > cpp32 -h -S
    Embarcadero C++ Win32 Preprocessor 6.21 Copyright (c) 1993-2009 Embarcadero Tech
    nologies, Inc.
    Available options (* = default setting, xxx = has sub-options: use -h -X):
    (Note: -X- or -w-XXX will usually undo whatever was set or unset by -X)
      -S      Control output format; see user documentation
      -Sc     Keep comments
      -Sd     Dump defines/undefs in preprocessed output
      -Sk     Keep output file on errors
      -Sr     Make output readable
      -Ss     Supply statistics
      -Sg     Emit info about header guards
      -Sx     Omit preprocessed text in output
      -Si     Don't include files; leave include statements in output
      -Sm     Don't expand macros; leave macro definitions and calls in output
      -Sp     Don't preprocess; leave preprocessor conditionals in output
    

    Der Präprozessor erstellt eine Datei namens "RekonMainForm.i", die eine hierarchisch aufgebaute Übersicht der referenzierten Headerdateien auflistet.
    Da kannst du erkennen, welcher Header welchen einbindet.

    Dann könntest du folgendes ausprobieren:

    "C:\Program Files (x86)\CodeGear\RAD Studio\6.0\bin\cpp32.exe" -D_DEBUG;_RTLDLL;NO_STRICT;;_RTLDLL;NO_STRICT; -I"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\dinkumware";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\vcl";"..\..\..\..\AppData\Local\{65B1AA84-C1DF-4A2E-A28C-E242BD7DE4B3}\msofficebcbwin32\C0AE1552\A4BD7ADD";E:\Entwicklung\Rekon;E:\Entwicklung\Beispielcode\WordTestBernd;"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\ObjRepos\Cpp";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\include\Indy10";"C:\Program Files (x86)\CodeGear\RAD Studio\6.0\RaveReports\Lib" -y -c -k -tWM -tW -Hc -C8 -oDebug_Build\RekonMainFrm.obj -w-par -Od -v -vi- -H=Debug_Build\RekonProjekt.pch -H RekonMainFrm.cpp
    

    Das ist gleichfalls ein Aufruf des Präprozessors, jedoch ohne "-Ss -Sg -Sx", so daß die RekonMainForm.i-Datei diesmal einfach den vorverarbeiteten
    Quelltext von RekonMainForm.cpp enthält. Nun versuche folgenden Aufruf:

    bcc32 -P RekonMainForm.i
    

    Funktioniert das, oder resultiert das ebenfalls in einem Compilerfehler?



  • Der Beitrag ist jetzt ja schön breit geworden 😃

    Okay - offenbar tritt der Fehler beim Compilieren von RekonMainForm.cpp auf. Zunächst würde mich interessieren, wie das Verzeichnis
    "..\..\..\..\AppData\Local\{65B1AA84-C1DF-4A2E-A28C-E242BD7DE4B3}\msofficebcbwin32\C0AE1552\A4BD7ADD" in deinen Include-Pfad kommt?
    Das ist ein temporäres Verzeichnis des C++Builder-Installers und hat da nun wirklich gar nichts verloren.

    Also ich selber habe keine Ahnung! Ich hatte schon mal ein ähnliches Problem, als ich eine FileListBox in mein Programm eingebaut hatte, da bekam ich auch andauernd komische Fehler.
    Jetzt habe ich mal nach der FrontPageEditor_XP.h gesucht und auch gefunden. Da ist mir aufgefallen, dass eine Komponente TSurvey auf meinem Formular lag. Die habe ich aber meines Erachtens nie daraufgezogen, muss wohl aus Versehen passiert sein, vielleicht liegt das Ganze daran!
    Ich habe den #include und den #pragma link von FrontPage dowie die Survey-Komponente mal gelöscht, aber trotzdem bekomme ich noch Fehler z.B. in der MaskUtils.hpp ...

    Leider weiß ich nicht, was so eine Komponente biem Einfügen alles verändert am Quelltext, sonst könnte ich all das löschen ...
    Aber ich könnte ja mal ein neues Formular einfügen und das austesten! ...



  • MichelM schrieb:

    ich könnte ja mal

    ... das tun, was ich vorgeschlagen habe.


Log in to reply