std :: эксперимент :: файловая система :: v1 :: ошибка ссылки статуса даже после флага -lstdc ++ - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь использовать функцию c ++ 1z для использования std :: эксперимент :: файловая система

После добавления флага -lstdc ++ fs с помощью g ++ я вижу, что могу связать std :: экспериментальный:: filesystem :: v1 :: __ cxx11 :: path :: _ M_split_cmpts () с моей программой.

т.е. я больше не получаю эту ошибку

sdc.cpp :(. text+ 0x7e5): неопределенная ссылка на `std :: эксперимент :: файловая система :: v1 :: __cxx11 :: path :: _ M_split_cmpts () '

Однако даже после связывания я получаю следующую ошибку.

g ++ -std = c ++ 1z timer.cpp -lstdc ++ fs -O2 -Я включаю -L lib -lOpenTimer -lpthread -o timer.out lib / libOpenTimer.a (spef.cpp.o): В функции spef::Spef::read(std::experimental::filesystem::v1::__cxx11::path const&)': spef.cpp:(.text._ZN4spef4Spef4readERKNSt12experimental10filesystem2v17__cxx114pathE[_ZN4spef4Spef4readERKNSt12experimental10filesystem2v17__cxx114pathE]+0x2e): undefined reference to std :: экспериментальный :: файловая система :: v1 :: status (std :: экспериментальный :: файловая система :: v1 :: __ cxx11 :: path const &) 'lib / libOpenTimer.a (sdc.cpp.o): В функции ot::sdc::home[abi:cxx11]()': sdc.cpp:(.text+0x414): undefined reference to std :: экспериментальная :: файловая система :: v1 :: status (std :: экспериментальная :: файловая система :: v1 :: __cxx11 :: path const &) 'sdc.cpp :(.text + 0x7ab): неопределенная ссылка на std::experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)' lib/libOpenTimer.a(sdc.cpp.o): In function ot :: sdc :: SDC :: read (std :: экспериментальный :: filesystem :: v1 :: __cxx11 :: путь const &) ': sdc.cpp :(. text + 0x2fa1): неопределенная ссылка на std::experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)' sdc.cpp:(.text+0x3084): undefined reference to std :: экспериментальная :: файловая система :: v1 :: status (std :: экспериментальная:: файловая система :: v1 :: __cxx11 :: путь const &) 'sdc.cpp :(. text + 0x30db): неопределенная ссылка на std::experimental::filesystem::v1::current_path[abi:cxx11]()' sdc.cpp:(.text+0x30f7): undefined reference to std :: экспериментальная :: файловая система :: v1 :: absolute (std :: экспериментальная:: файловая система :: v1 :: __ cxx11 :: путь const &, std :: экспериментальная :: файловая система :: v1 :: __ cxx11 :: путь const &) 'sdc.cpp :(. text + 0x3788): неопределенная ссылка на std::experimental::filesystem::v1::remove(std::experimental::filesystem::v1::__cxx11::path const&)' lib/libOpenTimer.a(os.cpp.o): In function ot:: user_homeabi: cxx11 ': os.cpp :(. text + 0x30d): неопределенная ссылка на `std :: экспериментальная :: файловая система :: v1 :: current_pathabi: cxx11' collect2: ошибка: ld вернул 1 состояние выхода

Любая помощь в решении этой проблемы будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 ноября 2018

Вопрос был у меня.Кажется, я смог решить ее сам.

Я добавил -lstdc ++ fs в конце вместо середины, и он начал работать.

Вот обновленная команда

g ++ -std = c ++ 1z timerapp.cpp -O2 -Я включаю -L lib -lOpenTimer -lpthread -o timer.out -lstdc ++ fs

по сравнению спредыдущая команда

g ++ -std = c ++ 1z timerapp.cpp -lstdc ++ fs -O2 -Я включаю -L lib -lOpenTimer -lpthread -o timer.out

Не знаю, почему некоторые флаги связывания, как ожидается, будут добавлены в конце.

...