首页 > 解决方案 > 即使在 -lstdc++ 标志之后,std::experimental::filesystem::v1::status 链接错误

问题描述

我尝试使用 c++1z 功能来使用 std::experimental::filesystem

在使用 g++ 添加 -lstdc++fs 标志后,我可以看到我能够将 std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts() 与我的程序链接。

即我不再收到此错误

sdc.cpp:(.text+0x7e5): 未定义引用`std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'

但是,即使在链接之后,我也会收到以下错误。

g++ -std=c++1z timer.cpp -lstdc++fs -O2 -I include -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 tostd: :experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)' lib/libOpenTimer.a(sdc.cpp.o): 在函数ot::sdc::home[abi:cxx11]()': sdc.cpp:(.text+0x414): undefined reference tostd::experimental ::filesystem::v1::status(std::experimental::filesystem::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 functionot::sdc::SDC的引用::read(std::experimental::filesystem::v1::__cxx11::path const&)': sdc.cpp:(.text+0x2fa1): 未定义对std::experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)' sdc.cpp:(.text+0x3084): undefined reference tostd::experimental::filesystem::v1::的引用status(std::experimental::filesystem::v1::__cxx11::path const&)' sdc.cpp:(.text+0x30db): undefined reference tostd::experimental::filesystem::v1::current_path[abi:cxx11]()' sdc.cpp:(.text+0x30f7): undefined reference tostd::experimental::filesystem::v1::absolute(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&) ' sdc.cpp:(.text+0x3788): undefined reference to std::experimental::filesystem::v1::remove(std::experimental::filesystem::v1::__cxx11::path const&)' lib/libOpenTimer.a(os.cpp.o): In functionot::user_homeabi:cxx11': os.cpp:(.text+0x30d): undefined reference to `std::experimental::filesystem::v1:: current_pathabi:cxx11' collect2:错误:ld 返回 1 退出状态

任何解决此问题的帮助将不胜感激。

标签: g++c++17

解决方案


是我发了这个问题。似乎我能够自己解决它。

我在末尾添加了 -lstdc++fs 而不是中间,它开始工作了。

这是更新的命令

g++ -std=c++1z timerapp.cpp -O2 -I include -L lib -lOpenTimer -lpthread -o timer.out -lstdc++fs

与上一个命令相比

g++ -std=c++1z timerapp.cpp -lstdc++fs -O2 -I include -L lib -lOpenTimer -lpthread -o timer.out

不知道为什么最终会添加一些链接标志。


推荐阅读