Boost Library falsch eingebunden?



  • Hallo

    ich habe Boost in mein Netbeans IDE eingebunden und versuche folgenden Code zum laufen zu bekommen.

    #ifndef BOOST_SYSTEM_NO_DEPRECATED
    #define BOOST_SYSTEM_NO_DEPRECATED
    #include <cstdlib>
    #include <string>
    #include <iostream>
    #include "boost/filesystem.hpp"
    
    using namespace std;
    using namespace boost::filesystem;
    
    /*
     * 
     */
    int main(int argc, char** argv) {
    
        path file("/home/benni/test.html");
        if(exists(file)) {
            cout << file_size(file);
        }
        else {
            cout << "Nicht vorhanden";
        }
        return 0;
    }
    
    #endif
    

    In der IDE habe ich folgendes gemacht

    Unter C++ Compiler habe ich den obersten Boost Ordner als Lib angegeben.

    Im Linker habe ich oben den Boost/lib Ordner als Lib angegeben und bei dem Linker unten unter Libraries habe ich nichts eingetragen. Da ich einfach die passenden Files nicht gefunden habe.

    Jetzt bekomme ich, wenn ich das Projekt mit Build starte, folgende Fehlermeldung

    "/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
    make[1]: Verzeichnis »/home/benni/NetBeansProjects/Trash RM« wird betreten
    "/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/trash_rm
    make[2]: Verzeichnis »/home/benni/NetBeansProjects/Trash RM« wird betreten
    mkdir -p dist/Debug/GNU-Linux-x86
    g++     -o dist/Debug/GNU-Linux-x86/trash_rm build/Debug/GNU-Linux-x86/main.o -Lboost_1_58_0/libs
    build/Debug/GNU-Linux-x86/main.o: In Funktion `boost::filesystem::exists(boost::filesystem::path const&)':
    /home/benni/NetBeansProjects/Trash RM/boost_1_58_0/boost/filesystem/operations.hpp:404: Nicht definierter Verweis auf `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)'
    build/Debug/GNU-Linux-x86/main.o: In Funktion `boost::filesystem::file_size(boost::filesystem::path const&)':
    /home/benni/NetBeansProjects/Trash RM/boost_1_58_0/boost/filesystem/operations.hpp:571: Nicht definierter Verweis auf `boost::filesystem::detail::file_size(boost::filesystem::path const&, boost::system::error_code*)'
    collect2: error: ld returned 1 exit status
    make[2]: *** [dist/Debug/GNU-Linux-x86/trash_rm] Fehler 1
    make[2]: Verzeichnis »/home/benni/NetBeansProjects/Trash RM« wird verlassen
    make[1]: *** [.build-conf] Fehler 2
    make[1]: Verzeichnis »/home/benni/NetBeansProjects/Trash RM« wird verlassen
    make: *** [.build-impl] Fehler 2
    
    BUILD FAILED (exit value 2, total time: 849ms)
    

    Liegt es jetzt daran das ich irgendwelche Libs nicht angegeben habe?


  • Mod

    Die Bibliothek sollte einfach libboost_filesystem oder so ähnlich heißen. Und ja, sie ist nötig.



  • SeppJ schrieb:

    Die Bibliothek sollte einfach libboost_filesystem oder so ähnlich heißen. Und ja, sie ist nötig.

    Schon der COMPILER meldet einen Fehler. "boost/filesystem.hpp" gibt es nicht. Vorschlag:

    #include <boost/filesystem/operations.hpp>
    

    Übersetzen mit -I/usr/local (wenn Boost dort installiert wurde)

    und Linken mit

    -L/usr/local/lib -lboost_filesystem



  • Sorry, Linker Fehler: Hatte meine Brille verlegt....



  • Ja hab jetzt gesehen das man die Libs erst bauen muss.

    Hab sie jetzt im Boost Verzeichnis mit ./bootstrap.sh und danach ./b2 gebaut und dann in der IDE als Libs hinzugefügt.
    Funktioniert nun alles soweit vielen dank


Anmelden zum Antworten