J'utilise gcc 7.2 sur Ubuntu 16.04, et j'ai besoin d'utiliser la nouvelle bibliothèque filesystem de C++17. Bien qu'il existe effectivement une bibliothèque appelée experimental/filesystem, je ne peux utiliser aucun de ses membres. Par exemple, lorsque j'essaie de compiler ce fichier :
#include <iostream>
#include <string>
#include <experimental/filesystem>
using namespace std;
namespace fs = std::experimental::filesystem::v1;
int main(){
fs::path p1 = "/usr/share/";
}
J'obtiens une erreur de compilation qui ressemble à ceci :
$ g++-7 test.cpp -std=c++17
/tmp/ccfsMnlG.o: In function `std::experimental::filesystem::v1::__cxx11::path::path<char [12], std::experimental::filesystem::v1::__cxx11::path>(char const (&) [12])':
test.cpp:(.text._ZNSt12experimental10filesystem2v17__cxx114pathC2IA12_cS3_EERKT_[_ZNSt12experimental10filesystem2v17__cxx114pathC5IA12_cS3_EERKT_]+0x73): undefined reference to `st
d::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status
Qu'est-ce que je fais de travers ? Je ne pense pas qu'il y ait de problème avec le code, puisque je l'ai juste copié-collé d'un site web. Est-ce que j'utilise la mauvaise version de gcc ? Aussi, pourquoi ai-je besoin de <experimental/filesystem>
au lieu de <filesystem>
en C++17 ? Merci d'avance.