C++11/14



  • Unterstützt der XE6 Builder C++11 oder C++14?

    Wenn ich beispielsweise ein Klassenmember direkt initialisiere schlägt dies fehl. Ändere ich die Zielplattform auf 64 Bit funktioniert die direkte Initialisierung nach neuem C++11 Standard.

    Kann es sein, dass C++11 nur für 64 Bit-Anwendungen anwendbar ist?



  • rudpower schrieb:

    Kann es sein, dass C++11 nur für 64 Bit-Anwendungen anwendbar ist?

    Kann es sein, daß du nicht in die Dokumentation geschaut hast? 🙂

    http://docwiki.embarcadero.com/RADStudio/XE8/en/C%2B%2B11
    Da steht alles, was du wissen willst. Insbesondere unter "C++11 Language Features Compliance Status" findest du eine schöne Auflistung.



  • ok, vielen Dank. Wie ich sehe wird unter "C++11 Language Features Compliance Status" die "Initialization of class objects by rvalues" nur vom BCC64-Compiler unterstützt.

    Blöd ist nun, dass meine verwendete dll-Datei für 32 Bit-Anwendungen nun nicht mehr läuft.
    Vom Hersteller der dll habe ich für 64Bit eine dll, eine def-Datei sowie eine .h-Datei. Wenn ich das richtig verstehe, kann ich nun keine .lib-Datei mehr erzeugen sondern muss mit dem Tool MKEXP.EXE eine .a-Datei erzeugen. Diese muss ich dann auch dem Projekt hinzufügen und die dll-Datei in dem Verzeichnis unterbringen wo die dll liegt (in Win64)?



  • Wir haben für unsere Firma jetzt auch das RAD Studio XE8 zugelegt.
    Ich bin ziemlich enttäuscht, was die C++11/14 Fähigkeiten des aktuellen 32bit Compilers angeht, da habe ich wirklich mehr erwartet. Zumal der Standard von 2011 schon 4 Jahre alt ist.
    Vielleicht wird´s mit dem XE9 ja besser, wenn für 32bit Anwendungen auch die clang Toolchain benutzt wird.



  • wir benutzen den Builder XE6 und den steinzeitlichen Borland Builder 5. Da sieht es mit dem bereits schon wieder veralteten C++11 schlecht aus.



  • DocShoe schrieb:

    Vielleicht wird´s mit dem XE9 ja besser, wenn für 32bit Anwendungen auch die clang Toolchain benutzt wird.

    Hast Du irgendwo gelesen, daß der XE9 auch für 32bit den clang verwenden wird, oder ist dies nur eine Mutmaßung?
    Hab nämlich ähnliche Probleme und bin am überlegen vom XE6 auf XE8 zu gehen.

    MfG Stephan



  • Es gab mal eine Roadmap, die einen 32-bit-Clang-Compiler für 2014 oder 2015 versprach. Aber ich würde da keine Prognose wagen. Außerdem sehe ich das größere Problem darin, daß Embarcadero ihren Compiler aus Clang 3.1 geforkt hat und offenbar größere Schwierigkeiten hat, ihre Eigenentwicklungen in aktuellere Clang-Versionen einzupflegen, so daß auch der aktuelle 64-bit-Compiler noch auf Clang 3.1 basiert.



  • Wir hatten vor 4 Wochen eine Embarcadero Vertrieblerin im Haus, die uns erzählte, dass der 32bit clang Port für den Herbst geplant ist. Bin mal gespannt...



  • In der Beta ist es drin. Es gibt aber keine offizielle Aussage ob das im XE9 Release auch noch so ist.



  • Ich habe eben die Version XE10 getestet. Und dort ist von Standard 11 unter 32 Bit über Haupt nichts vorhanden.

    Daher bleibe ich auf XE7.

    Gruss Renato



  • Im XE10 ist es definitiv drin. Bei 32Bit kann man zwischen dem "klassischen Compiler" und CLang wählen. CLang läuft aber vor allem zusammen mit der VCL noch nicht überall ganz rund.
    Aber unser 2,5mio LOC Projekt lässt sich mit etwas Aufwand compilieren.
    Unser letzter Stand war XE2.



  • Ciao Michel

    Und wie stellt man die CLang compilierung ein? Ich habe unter Optionen den klassischen Compiler auf false gesetzt. Seither habe ich mehr Errors als vorher.

    [link32 Fehler] Error : Nicht Auflösbares externes referenziert

    Gruss Renato



  • Robbiani schrieb:

    Und wie stellt man die CLang compilierung ein? Ich habe unter Optionen den klassischen Compiler auf false gesetzt. Seither habe ich mehr Errors als vorher.

    [link32 Fehler] Error : Nicht Auflösbares externes referenziert

    Ich bin sicher, die Fehlermeldungen geben mehr Details her als das.



  • Aber sicher!

    Da bin ich mir aber nicht sicher, dass dies was zur Klärung beiträgt.

    [link32 Fehler] Error : Nicht auflösbares erxernes '__Unisind SjLj_Register' referenziert von c:\projekt\datei.obj

    Gruss Renato



  • Hi,

    bitte einmal durchlesen:

    http://docwiki.embarcadero.com/RADStudio/Seattle/en/What%27s_New

    Kurz: $(BDS)\lib\win32\release\ darf nicht im include-Pfad der Projektdateien stehen

    Auch wichtig:
    http://docwiki.embarcadero.com/RADStudio/Seattle/en/Release_Notes#Additional_Options_for_BCC32C_to_Generate_a_Package

    Gruß
    Kerem



  • Ciao Kerem

    Tja, lesen solte man können. Trotzdem herzlichen Dank für deine Hilfe und Geduld.

    Gruss Renato


Anmelden zum Antworten