Co może być przyczyną błędu linkowania ?

0

Błąd wygląda tak:

[build] C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/formtools.cpp.obj: in function `std::filesystem::__cxx11::path::_S_convert<char>(char const*, char const*)::_UCvt::_UCvt()':
[build] C:/msys64/mingw64/include/c++/12.2.0/bits/fs_path.h:880: undefined reference to `std::codecvt<wchar_t, char, _Mbstatet>::codecvt(unsigned long long)'
[build] C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/formtools.cpp.obj: in function `std::filesystem::__cxx11::path::_S_convert<char>(char const*, char const*)::_UCvt::~_UCvt()':
[build] C:/msys64/mingw64/include/c++/12.2.0/bits/fs_path.h:880: undefined reference to `std::codecvt<wchar_t, char, _Mbstatet>::~codecvt()'

Komentowałem aż zniknie problem i wyszło że wystarczy dodać dwie linijki

std::string path{"folder/folder"};
for (auto const &dir_entry : std::filesystem::directory_iterator{path})    {    }

problem objawił się na GCC, clang kompiluje bez problemu

Mogę prosić o podpowiedzi ?

1
Adamek Adam napisał(a):

Mogę prosić o podpowiedzi ?

std::filesystem::directory_iterator nie ma konstruktora z parametrem typu std::string;
directory_iterator( const std::filesystem::path& p ); sama nazwa zmiennej nie wystarczy :D

1

moja wina !

problem okazał sie jest tylko na jednym komputerze

analizowalem CMakeCache.txt i wszystkie ścieżki powinny być w C:/msys64/mingw64 ,
w cache cmake dla w folderze budowania gcc było wpisane Qt z clang-a i jeszcze pare innych drobiazgów nie z tego folderu co trzeba

mam ustawione w "VS code" aby każdy kompilator miał swój folder BUILD

{
    "cmake.buildDirectory": "${workspaceFolder}/../${workspaceRootFolderName}_build_${buildKitTargetArch}_${buildKitVendor}_${buildType}",
}

czasami jednak tak robi przy przełączeniu kompilator-a w "CMake Tools"

1 użytkowników online, w tym zalogowanych: 0, gości: 1