Ordner von A nach B Kopieren.



  • Ich habe mir boost_1_34_1 runtergeladen, habe den Ordner boost in meinem Include Ordner von meinem Compiler kopiert.
    Das Programm lässt sich aber nicht Compilieren

    #include <boost/filesystem/operations.hpp>
    #include <boost/filesystem/path.hpp>
    #include <iostream>
    using namespace boost::filesystem;
    
    main()
    {
        path my_path("D:\Daten\");
        if(exists(my_path)){
            cout << "Verzeichnis vorhanden" << endl;
        }
    
        return 0;
    }
    
    -------------- Build: Debug in boostFilesystem ---------------
    Linking console executable: bin\Debug\boostFilesystem.exe
    obj\Debug\main.o: In function `ZN5boost6detail17sp_counted_impl_pINS_10filesystem22basic_filesystem_errorINS2_10basic_pathISsNS2_11path_traitsEEEE5m_impEED0Ev':D:/Compiler/include/boost/detail/sp_counted_base_gcc_x86.hpp:(.text$_ZN5boost10filesystem6existsERKNS0_10basic_pathISsNS0_11path_traitsEEE[boost::filesystem::exists(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x72): undefined reference to `boost::filesystem::detail::status_api(std::string const&, unsigned int&)'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)
    0 errors, 0 warnings
    

    Brauche ich da eine Lib für? Ich verstehe nicht wie ich die bauen soll.



  • boost/filesystem/operations.hpp: No such file or directory
    Das sollte dir ja sagen was da schiefgeht.
    Er findet den Include-Datei einfach nicht.

    path my_path("D:\Daten\");
    

    Aua.
    Das Zweite \ maskiert die " ⚠



  • Das muss

    path my_path("D:\\Daten\\");
    

    Also mit 2 "\".
    Ein \ sagt dem Compiler immer dass eine Escape-Sequenz kommt, er sieht also nicht das Zeichen \ sondern die Escape-Sequenz. Das Zeichen \ bekommr indem man \\ schreibt



  • lord_fritte schrieb:

    Brauche ich da eine Lib für? Ich verstehe nicht wie ich die bauen soll.

    Ja, für filesystem brauchst du eine lib. Es gibt auf der boost Seite Anleitungen zum Bauen der lib. Das ist vom verwendeten Compiler abhängig. Welchen hast du denn?



  • mingw gcc für Windows 32-bit, also das geht mit dem gjam? naja ich bin gerade am bauen, aber irgendwie baut der das alles für msvc-8.0express.
    Also ich habe die Visual C++ Express edition auch installiert, aber damit Compiliere ich nicht.

    @ Storm.Xapek.de + Aksel
    Ja ich weiss, ich habe das noch nicht geändert, weils noch unwichtig ist solange das mit der lib nicht geht.



  • Hast du auch angegeben, dass du mingw nehemen willst?

    bjam "-sTOOLS=mingw" "-sBUILD=debug release <runtime-link>static/dynamic" "-sMINGW_ROOT_DIRECTORY=d:/mingw" install

    So sieht der bjam Aufruf bei mir aus.
    Zudem habe ich noch die user-config.jam in tools\build\v2 geändert.
    Dort steht dann bei mir

    using gcc : mingw : d:/mingw/bin/mingw32-g++ : <root>d:\mingw\bin ;

    Alle anderen usings sind auskommentiert.



  • Ok er läuft jetzt, mal abwarten.



  • Vielleicht solltest du dir mal die Ausgabe von "bjam --help" ansehen, da steht alles was du wissen musst.

    Und du kannst mal "--toolset=gcc" zu dem bjam-Aufruf hinzufügen.

    Aber das ist alles auch hier erklärt.



  • Nur noch eine Frage.. *.lib und *.dll ist doch theoretisch das selbe oder?



  • nein.



  • Tja,.. der baut nur *.ddl dateien aber keine lib's



  • evtl. sind Dateien die auf .a enden dabei? Das sind ebenfalls libs.



  • Ja sind vorhanden, es läuft aber irgendwie mit der DLL



  • Wenn du die filesystem-header mit einbindest werden die dazugehörigen libs meist automatisch mit eingebunden.



  • Also er Compiliert jetzt ohne zu motzen.


Anmelden zum Antworten