Boost-Library (Compilerfehler <Pragma-Direktive>)



  • Hallo Zusammen

    Ich wollte mich ein bisschen mit der Boost-Library für die TCP-Verbindungen, HTTP GET und POST,... vertraut machen. Dabei wollte ich ein Beispiel eines Buches bearbeiten.

    Das Problem ist nun, dass mir der Compiler stets Fehlermeldungen bringt,

    Ausgangslage:
    1.
    - Borland C++Builder 2010 gestartet
    - Neues Projekt erstellt (C++ Konsolenanwendung mit VCL-Stil)
    - #include <boost\asio.hpp> in der cpp-Datei deklariert.
    * Compiler gab einen Fehler aus <Ungültige pragma-Direktive-Option: -v

    - Die Boost-Libs gelöscht (boost_1_39) und die neue Boost-Libs heruntergeladen (boost_1_41_0)
    - Umgebungsvariabel (CG_BOOST_ROOT) entsprechend angepasst, so dass die neuen Dateien verwendet werden.
    - erneut ein neues Projekt angelegt.
    * Compiler gab wieder den Fehler <Ungültige pragma-Direktive-Option: -v

    Bemängelte Code-Zeile

    //
    // figure out whether we want the debug builds or not:
    //
    #if __BORLANDC__ > 0x561
    #pragma defineonoption BOOST_BORLAND_DEBUG -v
    #endif
    

    Anschliessd habe ich nach folgendem Fehler gesucht:
    [BCC32 Fehler] auto_link.hpp(262): E2075 Ungültige pragma-Direktive-Option: -v

    Jedoch konnte ich keine Lösung ausfindig machen.
    Wisst ihr, woran das Liegt und wie ich dies beheben kann.

    P.s. Ich weiss, ich könnte auch die Indy-Komponenten verwenden. Jedoch wollte ich es mal mit den Boost-Libs versuchen.

    Vielen Dank für eure Aufmerksamkeit.



  • http://lists.boost.org/Archives/boost/2005/07/89674.php

    Da wird das als Bug einer alten Compilerversion bezeichnet, weswegen extra die #if-Bedingung eingefügt wurde.
    Entweder hat sich der Bug in 2010 wieder eingeschlichen oder der 2010-Compiler meldet sich möglicherweise nicht mehr als __BORLANDC__ bzw. nicht mehr grösser als 5.6.1

    Als vorübergehende Lösung kann die Zeile aber offenbar auch einfach auskommentiert werden (s. Link, letzter Beitrag).



  • Hallo Jansen.

    Danke für deine Hilfe.
    Durch das auskommentieren der Zeilen, konnte der Fehler tatsächlich behoben werden. Jedoch habe ich nun noch einen neuen.

    [BCC32 Fehler] memory(733): E2451 Undefiniertes Symbol 'is_empty'

    Diesen Fehler taucht in der Version 1_39 und 1_41 auf.

    Fehlerzeilen:

    class unique_ptr
    		: public _Unique_ptr_base<_Ty, _Dx,
    			is_empty<_Dx>::value
    				|| is_same<default_delete<_Ty>, _Dx>::value>
    	{	// non-copyable pointer to an object
    

    Ich habe hier zwar schon einen Beitrag gefunden (aus dem Jahre 2003) in welchem der Fehler ebenfalls aufgetreten ist.
    Jedoch kann ich dazu kein Fix oder Workaround finden.
    http://lists.boost.org/Archives/boost/2003/02/43760.php

    P.s. Durch das verfolgen der verschiedenen Includes. Konnte ich feststellen, dass die Datei is_empty.hpp eigentlich mitgeladen und bekannt sein müsste.

    Vielleicht hast du dazu ja ebenfalls eine Lösung.


Anmelden zum Antworten