Wechsel auf XE6 linker Fehler



  • Hallo zusammen,

    ich bin hier am verzweifeln. Ich versuche gerade mein Projekte die in XE5 einwandfrei liefen in XE6 zu Kompilieren und bekomme nur Fehlermeldungen.

    ich habe ein Package indem meine selbst erstellten Komponenten enthalten sind. Das Package lässt sich Kompilieren und Installieren.

    Wenn ich aber jetzt ein neues Projekt erstelle und darin eine selbst erstellte Komponente nutzten will bekomme ich diese Fehler:

    [ilink32 Fehler] Error: Nicht auflösbares externes 'std::char_traits<char>::copy(char *, const char *, unsigned int)' referenziert von C:\USERS\PUBLIC\DOCUMENTS\EMBARCADERO\STUDIO\14.0\DCP\CANBUS.LIB|DataMatrixDLL
    [ilink32 Fehler] Error: Nicht auflösbares externes 'std::char_traits<char>::assign(char&, const char&)' referenziert von C:\USERS\PUBLIC\DOCUMENTS\EMBARCADERO\STUDIO\14.0\DCP\CANBUS.LIB|DataMatrixDLL
    [ilink32 Fehler] Error: Nicht auflösbares externes 'std::char_traits<char>::move(char *, const char *, unsigned int)' referenziert von C:\USERS\PUBLIC\DOCUMENTS\EMBARCADERO\STUDIO\14.0\DCP\CANBUS.LIB|FPen_Setting
    [ilink32 Fehler] Error: Nicht auflösbares externes 'std::char_traits<char>::length(const char *)' referenziert von C:\USERS\PUBLIC\DOCUMENTS\EMBARCADERO\STUDIO\14.0\DCP\CANBUS.LIB|FPen_Setting
    [ilink32 Fehler] Error: Linken kann nicht ausgeführt werden
    

    CANBUS heißt mein erstelltes Package DataMatrixDLL und FPen_Settings die darin enthaltenen Units. Aber das std::char_traits sagt mir gar nichts. Wenn ich diese Units aus dem Package raus nehme schmeißt der die Fehler bei einer anderen Unit.

    Das Projekt lässt sich übrigens nur nicht Kompilieren wenn ich "Mit dynamischer RTL linken" auf false setzte.

    jemand eine Idee was ich da machen kann?



  • Das klingt nach fehlerhaftem Projektupdate. Kannst du mal probeweise das Projekt in XE6 neu erzeugen, also ein neues Projekt anlegen und die alten Dateien hinzufügen?



  • Habe ich gestern gemacht, bringt leider auch nichts.

    Momentan sieht es so aus als ob irgendeine automatische Funktion von XE6 mir falsche Daten oder Einstellungen in das Projekt setzt.

    Folgende Vorgehensweise:

    1. Package Projekt neu Angelegt alte Daten hineingezogen alles Kompiliert und installiert -> kein Problem
    2. Neues Projekt VCL-Formularanwendung angelegt Kompiliert -> Kein Problem
    3. Komponente aus meinem Package rein gezogen Kompiliert -> Fehler
    4. Komponente wieder entfernt, Includes sowie pragma link entfernt Kompiliert -> Fehler
    5. In den Projekteinstellungen Include Pfade sowie bibliothekspfade entfernt -> Kompiliert -> Fehler
    6. Noch mal Projekteinstellungen Kontrolliert -> Pfade wieder vorhanden

    Ich bekomme die Pfade nicht mehr aus den Einstellungen raus. selbst wenn ich die per Texteditor aus der Projektdatei entferne, kommen die automatisch wieder! 😕

    das Teil macht mich wahnsinnig. 😡



  • viele Stunden später kann ich den Fehler endlich eingrenzen. Kapieren tu ich es aber nicht...

    Ich hab mein komplettes Package zerrupft und nach und nach alles raus geworfen, bis irgendwann der Fehler weg war. Nach ein paar versuchen ist raus gekommen sobald ich in einer Komponente einen std::vector benutze, bekomme ich diesen Fehler. Jetzt kommt aber der Hammer....

    wenn ich in dem Projekt das die Fehler schmeißt auch einen std::vector benutze, ist der Fehler weg.

    Kann das jemand verstehen? jemand eine Idee oder Theorie dazu?



  • Jetzt bin ich echt sprachlos...

    den Fehler gab es wohl schon in XE2 und wurde angeblich behoben

    http://qc.embarcadero.com/wc/qcmain.aspx?d=89927



  • falls jemand das gleiche Problem hat hier die Lösung:

    http://qc.embarcadero.com/wc/qcmain.aspx?d=126422



  • Genau den selben Fehler habe ich auch bei meinen Projekten, die ich nach XE4 hochgezogen habe.
    Mit jeder neuen Version habe ich neue solche Probleme mit meinen alten Projekten. Macht die letzten Jahre wirklich keinen Spaß mehr.

    bei mir kam nur assign, verwende ich aber nicht selber im Projekt.
    Könnte mit einer expliziten Template-Instanzieirung gehen, wenn man das im Projekt macht?


Anmelden zum Antworten