Lib als Release oder Debug bzw. Borland C++ stürtzt ab bei sstream



  • siehe weiter unten...

    Ich habe nun eine library (.lib) erstellt und benutze diese. Nun bin auf folgendes Problem gestoßen:

    Wenn ich die Library im Debugmodus erstelle und mein Programm das sie benutzt im Releasemodus kompiliere bekomme ich eine Exception, wenn ich eine bestimmte Operation ausführe.

    Wenn ich die Library hingegen im Releasemodus erstelle und dann mein Programm ebenfalls als Release kompiliere passiert das nicht.

    Muss ich jetzt 2 libs erstellen (debug, release) oder liegt der fehler eher in meinem Programm ?



  • Hallo

    Erstelle 2 libs und gib der einen noch zusätzlich ein d für Debug im Namen.

    chrische



  • Wenn deine Debug- und Release-Versionen alle die gleichen Versionen von gemeinsam genutzen Libs verwenden, dann sollte es keine Probleme geben.
    Wahrscheinlich linkt die Debug-Version deiner Lib zu anderen Versionen von diversen Libs als deine Release-Version deiner Anwendung.
    Also einfach mal checken zu was du so linkst.



  • Vielen Dank für eure Antworten...

    Habe jetzt erst mal zwei libs erstellt (debug und release).

    Da stellt sich mir gleich das nächste Problem:

    Die lib muss mit Visual C++ und Borland Turbo C++ funktionieren - geht natürlich so net - also habe ich 2 libs erstellt. Einmal mit VC und einmal mit Turbo C++.
    Das funktioniert alles auch ganz gut...aber nur solange bis ich in einer der Funktionen der Library folgendes mache (ist nicht gerade das Effizienteste aber es ging schnell):

    //Hab die Funktion mal aufs Wesentliche herunterreduziert...
    string foo(int x) {
    
       ostringstream st;
    
       st << x;
    
       return st.str();
    
    }
    

    Die Lib zu erstellen funktioniert auch hier aber...
    Sobald ich nun das Projekt starte (wo auf die lib gelinkt wird) schmiert er mir schon direkt nach Programmstart ohne das ich irgendeine Funktion benutze mit ner Debugger Exception ab (EAccessViolation). In Visual Studio geht das alles.

    Ich habe keine Ahnung was das soll... 😞



  • Verwende in der VC-Anwendung nur die VC-Version der Lib und in Turbo-C++ ebenso, dann sollte es gehen.



  • Ja das ist ja der Punkt - das mache ich ja schon!

    Das ist die mit TurboC++ erzeugt Version die diesen Fehler verursacht...

    Edit: Frage an die Moderatoren: Sollte ich dieses Problem lieber nochmal in der Borland Sparte des Forums schildern ?



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • kleiner Hinweis: gemeint ist nicht das "antike" Turbo C++ sondern die kürzlich veröffentlichte C++ Version des Turbo Explorers von Borland.



  • Greenhorn2006 schrieb:

    Muss ich jetzt 2 libs erstellen (debug, release) oder liegt der fehler eher in meinem Programm ?

    Das ist eigentlich normal, dass man für Debug/Release zwei verschiedene LIBs erstellen muss. Auch für ANSI/UNICODE /Single/Multi-Threaded usw...



  • Hm Das Problem mit den 2 unterschiedlichen Libs habe ich ja schon gelöst, aber das mit dem StringStream ist mir echt ein Rätsel. Bug von Seiten Borlands ?

    Nachtrag: Es scheint an meiner Art und Weise des Einbindens zu liegen:

    Was genau ist jetzt falsch daran ??

    #pragma comment(lib,"testLib.lib")
    

Anmelden zum Antworten