GLScene für C++Builder compilieren



  • Hier hat jemand exakt das selbe Problem und eine Lösung erhalten: http://stackoverflow.com/questions/10516638/how-can-i-solve-fatal-compiler-errors-when-installing-glscene-into-rad-studio-20

    Aber auch hier ist dann GLScene nur für "RAD Studio - Delphi" verfügbar. Wie bekomme ich es auch für "RAD Studio - C++Builder" in die Tool-Palette?



  • Maik2009 schrieb:

    Aber auch hier ist dann GLScene nur für "RAD Studio - Delphi" verfügbar. Wie bekomme ich es auch für "RAD Studio - C++Builder" in die Tool-Palette?

    D.h., du hast RAD Studio?

    Dann kannst du in den Projekten (in den Delphi-Projekten, wohlgemerkt!) in den Delphi-Compiler-Optionen unter "Erzeugung der C/C++-Ausgabedatei" "Alle C++Builder-Dateien erzeugen" auswählen. Ggf. mußt du den Package-Cache leeren, damit die Komponenten sichtbar werden.

    Wenn es so funktioniert, dann gut, aber du bist gewarnt - ich habe die oben zitierten Probleme nicht erfunden.



  • Ja ich habe das "RAD Studio 2009" Danke für den Hinweis mit der Compiler-Einstellung.

    Wenn ich in "Delphi-Compiler -> Linken -> Linker-Ausgabe: Alle C++Builder-Dateien erzeugen(auch Package-Libs)" aktiviere, habe ich leider wieder obig geschildertes Problem mit:

    [DCC Fehler] Schwerwiegender Fehler (Ausnahme von HRESULT: 0x8000FFFF (E_UNEXPECTED))
    

    Bei der "Spline.pas" stürzt er immer ab und die "Spline.hpp" ist beschädigt. Compilieren für Delphi geht anstandslos.



  • Tja - wenn du die Expertise hast, kannst du natürlich auf Fehlersuche im Delphi-Compiler gehen und im Quelltext Workarounds einfügen. Oder du findest dich damit ab, daß es nicht direkt geht, und machst dich daran, in der Weise wie oben von beschrieben eine Delphi-Wrapper-Komponente zu schreiben. (Das hält übrigens auch die Compilierzeiten für C++ gering.)



  • Schade das niemand GLScene für RAD Studio zu laufen hat. Ich habe leider keine Ahnung warum er die "spline.pas" nicht compilieren will und regelrecht abstürzt. Ein grober Blick in die Quelltextdatei hat jedenfalls nichts auffälliges gezeigt.

    Hat jemand zufällig "RAD Studio XE2" und dort mal ausprobiert? Vielleicht ist das dort im Compiler ja berichtigt.



  • Wenn man in der Spline.pas die Zeile

    TCubicSplineMatrix = array of array[0..3] of Single;
    

    ändert in:

    TCubicSplineMatrix = array of array of Single;
    

    Dann compiliert er das Projekt fehlerfrei. Ich kenne mich mit Delphi zu wenig aus. Hat das in der Form Nachteile? Kann man es anders lösen? Laut dem was ich über Delphi gefunden habe, wäre der obige Syntax korrekt. Warum haut hier der Compiler aber nun eine Fehlermeldung raus? 😕



  • Man kann den Compiler hier austricksen, indem man dies so umschreibt:

    TCubicSplineMatrixEx = array[0..3] of Single;
    TCubicSplineMatrix = array of TCubicSplineMatrixEx;
    

    Jetzt sagt er leider noch:

    [DCC Warnung] GLSelection.pas(299): W1025 Sprach-Feature wird nicht unterstützt: 'abstract class method'

    Gibt es da ein Setting das ich vergessen habe? Sollte bzw. kann man die Fehlermeldung eventuell irgendwie einfach ignorieren? Muss ich in der Delphi-Source was umschreiben?



  • KarlFritz schrieb:

    TCubicSplineMatrix = array of array[0..3] of Single;
    

    Entspricht DynamicArray<StaticArray<Single,3> > in C++.

    KarlFritz schrieb:

    TCubicSplineMatrix = array of array of Single;
    

    Entspricht DynamicArray<DynamicArray<Single> > .

    KarlFritz schrieb:

    Dann compiliert er das Projekt fehlerfrei.

    Und aller Delphi-Code, der MyCubicSplineMatrix[1][2] := 4.2; schreibt, erzeugt eine Zugriffsverletzung, weil das innere dynamische Array standardmäßig leer ist (im Debugmodus bekommst du immerhin Range-Checks).

    KarlFritz schrieb:

    Warum haut hier der Compiler aber nun eine Fehlermeldung raus? 😕

    Was für eine jetzt? Du sagst doch, es compiliert fehlerfrei, oder was?

    Ich will niemanden daran hindern, mit dem Kopf an die Wand zu rennen. Die Wand bleibt vermutlich stärker 😉 und ich habe oben schon geschrieben, wie man die Probleme umgehen kann. Aber bitte, rennt euch die Schädel ein 🙂



  • Ich meinte das so...
    Der Compiler crasht, wenn er in "spline.pas" diese Zeile compilieren sollte:

    TCubicSplineMatrix = array of array[0..3] of Single;
    

    Aber nur wenn er die C++Builder Libs etc mit compilieren soll. Delphi allein hat damit keine Probleme.

    Ich habe dann ein Workaround eingesetzt, damit der Compiler anstandslos die "spline.pas" compiliert:

    TCubicSplineMatrixEx = array[0..3] of Single;
    TCubicSplineMatrix = array of TCubicSplineMatrixEx;
    

    Wenn ich jetzt das Projekt "installiere", dann compiliert er es komplett und zeigt mir Package "GLScene_DESIGNTime2009.bpl wurde installiert." als Messagebox mit vielen Komponenten. Zusätzlich zeigt er noch Warnungen bezüglich:

    [DCC Warnung] GLSelection.pas(299): W1025 Sprach-Feature wird nicht unterstützt: 'abstract class method'

    Wenn ich jetzt eine C++Builder VCL Anwendung starte, kann ich sogar endlich GLScene Komponenten auswählen.

    Wenn ich jetzt aber mein Test-Projekt compiliere, dann erhalte ich sehr seltsame Fehlermeldungen:

    [BCC32 Fehler] Glcrossplatform.hpp(156): E2293 ) erwartet
    // Zeile 156: extern PACKAGE Graphics::TColor __fastcall RGB(const System::Byte r, const System::Byte g, const System::Byte b);
    
    [BCC32 Fehler] Vectorgeometry.hpp(25): E2316 'PSingle' ist kein Element von 'System'
    // Zeile 25: typedef System::PSingle PFloat;
    
    [BCC32 Fehler] Vectorgeometry.hpp(378): E2356 Redeklaration von '_fastcall VectorAdd(const float *,const float *)' mit anderem Typ
    // Zeile 378: extern PACKAGE Vectortypes::TVector4f __fastcall VectorAdd(float const *v1, float const *v2)/* overload */;
    

    und so weiter....

    Also die Mauer bröckelt schon etwas... 😉



  • KarlFritz schrieb:

    Wenn ich jetzt aber mein Test-Projekt compiliere, dann erhalte ich sehr seltsame Fehlermeldungen:

    Herzlichen Glückwunsch, du bist da angekommen, wo ich nach kurzer Prüfung meiner Optionen aufgegeben habe. Siehe mein erstes Posting im Thread.


Anmelden zum Antworten