Codeblocks 13.12 und boost 1.63.0



  • Moin!

    Ich möchte gerne mit Codeblocks 13.12 und boost 1.63.0 verwenden.

    Als Beispielcode habe ich folgendes verwendet:

    #include <boost/locale.hpp>
    #include <iostream>
    
    #include <ctime>
    
    int main()
    {
        using namespace boost::locale;
        using namespace std;
        generator gen;
        locale loc=gen(""); 
        // Create system default locale
    
        locale::global(loc); 
        // Make it system global
    
        cout.imbue(loc);
        // Set as default locale for output
    
        cout <<format("Today {1,date} at {1,time} we had run our first localization example") % time(0) 
              <<endl;
    
        cout<<"This is how we show numbers in this locale "<<as::number << 103.34 <<endl; 
        cout<<"This is how we show currency in this locale "<<as::currency << 103.34 <<endl; 
        cout<<"This is typical date in the locale "<<as::date << std::time(0) <<endl;
        cout<<"This is typical time in the locale "<<as::time << std::time(0) <<endl;
        cout<<"This is upper case "<<to_upper("Hello World!")<<endl;
        cout<<"This is lower case "<<to_lower("Hello World!")<<endl;
        cout<<"This is title case "<<to_title("Hello World!")<<endl;
        cout<<"This is fold case "<<fold_case("Hello World!")<<endl;
    
    }
    

    Ich habe bei Codeblocks den Pfad unter den Einstellungen gesetzt (boost Ordner) und im Projekt ebenfalls.
    Trotzdem findet Codeblocks die HEader Datei core.hpp nicht.

    Danke im Voraus.

    Danke



  • Habe boost 1.63.0 mal zum Testen installiert. Leider sind mir Klassen in C++ nicht geläufig. Nach jedem beseitigten Fehler treten neue Fehler auf. Bei mir funktioniert der folg. abgespeckte Code, wenn ich für Klasse generator eine eigene Implementierung von Konstruktor und Destruktor definiere. Anderenfalls Fehler "undefined reference to 'boost::locale::generator::generator()'" und "undefined reference to 'boost::locale::generator::~generator()'"

    /* boost_test1.cpp */
    // In CodeBlocks Menu Settings\Compiler unter Kartenreiter
    // Search_directories\Compiler den Pfad der Boost-Installation
    // setzen, z.B.:  C:\boost_1_63_0
    
    #include <boost/locale.hpp>
    #include <iostream>
    using namespace boost::locale;
    using namespace std;
    
    #define userdef_constructor  //eigener Konstruktor, Destruktor
    
    #ifdef userdef_constructor
    generator::generator() { return; }   //constructor
    
    generator::~generator() { return; }  //destructor
    #endif // userdef_constructor
    
    int main()
    {
        generator gen;
        //locale loc=gen("");  //error: undefined reference ...
        cout << "Hello World!" << endl;
        return 0;
    }
    


  • Ich weiß nicht wie deine ordnerstruktur aussieht, aber es wäre viel einfacher wenn du msys2 verwenden würdest.

    https://msys2.github.io/

    1. da runterladen und anweisungen folgen.

    2. Dann (nachdem du alles befolgt hast)

    pacman -S mingw-w64-i686-boost mingw-w64-x86_64-boost
    pacman -S mingw-w64-i686-gcc mingw-w64-x86_64-gcc
    pacman -S mingw-w64-i686-make mingw-w64-x86_64-make

    Bei Codeblocks den compiler anpassen, sodass er auf das Installationsverzeichnis von msys zeigt (32 oder 64 bit)

    a) (in Menüleiste) Settings -> Compiler...
    b) in dem Fenster was aufgeht auf den Tab "Toolchain Executables" und als Pfad zum Beispiel "D:\msys2\mingw64" einfügen oder "D:\msys2\mingw32" (je nachdem ob 32 oder 64 bit compiler.

    https://www.dropbox.com/s/fnn3v9osc6uxjjo/Screenshot 2017-01-03 02.48.49.png?dl=0

    Und dann versuche dein Projekt zu kompilieren.

    Warum der ganze Aufwand? Weil du mit msys2 auch noch mehr bibliotheken einfach installieren kannst wenn du sie brauchst. außerdem sind sie dann für den richtigen compiler gebaut etc. Glaub mir dass du damit viel Arbeit ersparst.



  • Ah anscheinend hast du es auch so hinbekommen.
    (Mein vorheriger post ist immernoch ein guter Tipp!)

    Du musst boost locale linken.
    In den Projektoptionen -> Linkeroptionen

    -lboost_locale-mt (falls mt libs, sonst ohne das mt suffix)

    Falls das nicht geht, musst du evtl die datei selbst raussuchen. Ich weiß nicht wo du dein boost her hast. (Selbst gebaut?) bzw musst du auch noch die linker pfade anpassen

    https://www.dropbox.com/s/yemmerlg1h0w8c5/Screenshot 2017-01-03 02.54.55.png?dl=0

    EDIT: ACHTUNG! In meinem Screenshot ist der debug build ausgewählt! Wenn man auf Release wechselt ist dann die Optione weg. Also immer auf das Projekt seblst klicken.


Anmelden zum Antworten