2011-11-01 9 views
14

Ciągle napotykam na błędy podczas próby skompilowania kodu, który wykorzystuje bibliotekę boost :: filesystem. Nie rozumiem żadnego z wyników kompilatora, który otrzymuję. Tu jest mój kod skopiowany z http://www.highscore.de/cpp/boost/dateisystem.html#dateisystem_pfadangaben:C++ boost :: system plików undefined odwołanie do `boost :: filesystem3 :: path :: root_name() const '

#include <boost/filesystem.hpp> 
#include <iostream> 

int main(){ 
    boost::filesystem::path p("C:\\Windows\\System"); 
    std::cout << p.root_name() << std::endl; 
    std::cout << p.root_directory() << std::endl; 
    std::cout << p.root_path() << std::endl; 
    std::cout << p.relative_path() << std::endl; 
    std::cout << p.parent_path() << std::endl; 
    std::cout << p.filename() << std::endl; 
} 

Mam Ubuntu 11.10 i mam zainstalowane libbost-dev i g ++. Oto, jak wygląda terminal:

[email protected]:~/Dokumente/Programming/Projekte/FTP-abgleicher$ g++ -o pr3 pr3.cpp 
/tmp/ccrN7yHl.o: In function `main': 
pr3.cpp:(.text+0x3b): undefined reference to `boost::filesystem3::path::root_name() const' 
pr3.cpp:(.text+0x7e): undefined reference to `boost::filesystem3::path::root_directory() const' 
pr3.cpp:(.text+0xc1): undefined reference to `boost::filesystem3::path::root_path() const' 
pr3.cpp:(.text+0x104): undefined reference to `boost::filesystem3::path::relative_path() const' 
pr3.cpp:(.text+0x147): undefined reference to `boost::filesystem3::path::parent_path() const' 
pr3.cpp:(.text+0x18a): undefined reference to `boost::filesystem3::path::filename() const' 
pr3.cpp:(.text+0x1e8): undefined reference to `boost::filesystem3::path::stem() const' 
pr3.cpp:(.text+0x22b): undefined reference to `boost::filesystem3::path::extension() const' 

/tmp/ccrN7yHl.o: In function `__static_initialization_and_destruction_0(int, int)': 
pr3.cpp:(.text+0x364): undefined reference to `boost::system::generic_category()' 
pr3.cpp:(.text+0x36e): undefined reference to `boost::system::generic_category()' 
pr3.cpp:(.text+0x378): undefined reference to `boost::system::system_category()' 
/tmp/ccrN7yHl.o: In function `boost::filesystem3::path::codecvt()': 
pr3.cpp:(.text._ZN5boost11filesystem34path7codecvtEv[boost::filesystem3::path::codecvt()]+0x7): undefined reference to `boost::filesystem3::path::wchar_t_codecvt_facet()' 
collect2: ld gab 1 als Ende-Status zurück 

^Translation of last line: ld returned an end status of 1 

Co robię źle?

+1

Następnym razem, proszę podświetlić swój kod i nacisnąć 'Ctrl + K' lub użyć przycisku' {} 'w edytorze. – Mat

+0

Tag 'german' usunięty jako część [** cleanup 2012 **] (http://meta.stackexchange.com/questions/128315/the-great-stack-overflow-tag-question-clean---2012). –

Odpowiedz

27

Musisz połączyć z -lboost_filesystem -lboost_system. System plików boost nie jest biblioteką tylko nagłówkową; raczej zależy od skompilowanych komponentów.

+0

Czy masz na myśli, że muszę zmienić moją linię komend na: g ++ -lboost_filesystem -o pr3 pr3.cpp – KG6ZVP

+0

Dodałem -lboost_filesystem na końcu mojej linii poleceń: g ++ -o pr3 pr3.cpp -lboost_filesystem Jednakże, teraz pobierz to wyjście:/usr/bin/ld: /tmp/ccKa219G.o: niezdefiniowane odwołanie do symbolu 'boost :: system :: system_category()' /usr/bin/ld: note: 'boost :: system: : system_category() 'jest zdefiniowany w DSO /usr/lib/libboost_system.so.1.46.1, więc spróbuj dodać go do linii poleceń linkera /usr/lib/libboost_system.so.1.46.1: nie można odczytać symboli: nieważne operacja collect2: ld zwrócił status zakończenia 1 – KG6ZVP

+6

@ KG6ZVP: Dodaj także "-lboost_system". –

Powiązane problemy