C ++ Boost sur Linux via le développement à distance Netbeans: référence indéfinie à boost :: filesystem :: path :: codecvt ()

J’ai donc installé Netbeans sur Windows7 et configuré la boîte Ubuntu avec samba pour partager le répertoire de développement où se trouvent les sources et la bibliothèque boost. J’ai compilé la bibliothèque boost pour pouvoir se connecter à boost_filesystem mais j’obtiens toujours cette erreur lorsque j’essaie de comstackr l’application:

Copying project files to /home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-Windows-x86_64/ at [email protected] "/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf make[1]: Entering directory `/home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-Windows-x86_64/Z/mr_deamon' "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/mr_deamon make[2]: Entering directory `/home/nms/.netbeans/remote/ophelia.tele2.net/t2003915- Windows-x86_64/Z/mr_deamon' mkdir -p build/Debug/GNU-Linux-x86 rm -f "build/Debug/GNU-Linux-x86/mr_deamon.od" g++ -c -g -I/opt/mail-relay/mr_deamon/boost_1_55_0 -I/opt/mail-relay/mr_deamon/mysql_connector_cpp/include -MMD -MP -MF "build/Debug/GNU-Linux-x86/mr_deamon.od" -o build/Debug/GNU-Linux-x86/mr_deamon.o mr_deamon.cpp mkdir -p dist/Debug/GNU-Linux-x86 g++ -o dist/Debug/GNU-Linux-x86/mr_deamon build/Debug/GNU-Linux-x86/mr_deamon.o -L/opt/mail-relay/mr_deamon/mysql_connector_cpp/lib -L/opt/mail-relay/mr_deamon/boost_1_55_0/bin.v2/libs -lmysqlcppconn-static -lmysqlclient -lboost_system -lboost_filesystem build/Debug/GNU-Linux-x86/mr_deamon.o: In function `boost::filesystem::file_size(boost::filesystem::path const&)': /opt/mail-relay/mr_deamon/boost_1_55_0/boost/filesystem/operations.hpp:447: undefined reference to `boost::filesystem::detail::file_size(boost::filesystem::path const&, boost::system::error_code*)' build/Debug/GNU-Linux-x86/mr_deamon.o: In function `path': /opt/mail-relay/mr_deamon/boost_1_55_0/boost/filesystem/path.hpp:139: undefined reference to `boost::filesystem::path::codecvt()' collect2: ld returned 1 exit status make[2]: *** [dist/Debug/GNU-Linux-x86/mr_deamon] Error 1 make[2]: Leaving directory `/home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-Windows-x86_64/Z/mr_deamon' make[1]: *** [.build-conf] Error 2 make[1]: Leaving directory `/home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-Windows-x86_64/Z/mr_deamon' make: *** [.build-impl] Error 2 BUILD FAILED (exit value 2, total time: 2s) 

Je pensais avoir le bon lien. Voici le code du programme:

 #include  #include  //using namespace std; using namespace boost::filesystem; int main(int argc, char**argv) { std::cout << file_size(argv[0]); return EXIT_SUCCESS; } 

La partie sql fonctionne bien avec la liaison et tout, mais l’inclusion du système de fichiers boost suffit à obtenir une erreur de construction. Impossible de savoir comment utiliser le développement à distance avec Netbeans sous Windows sous Linux. Qu’est-ce que je fais mal?

Un nouvel essai sans netbeans, juste sur Ubuntu avec l’exemple du lien système de fichiers Boost … et avec la commande de compilation: g ++ -pthread mr.cpp -lboost_filesystem-mt -lboost_system-mt la sortie est /tmp/ccIZaqeX.o: In function boost::filesystem::file_size(boost::filesystem::path const&)': mr.cpp: (.text._ZN5boost10filesystem9file_sizeERKNS0_4pathE[boost::filesystem::file_size(boost::filesystem::path const&)]+0x19): undefined reference to boost :: filesystem :: detail :: file_size (boost :: filesystem :: path, & boost :: system :: code_erreur *) ‘/tmp/ccIZaqeX.o: Dans la fonction boost::filesystem::path::path(char* const&, boost::enable_if<boost::filesystem::path_traits::is_pathable<boost::decay::type>, void>::type*)': mr.cpp: (.text._ZN5boost10filesystem4pathC2IPcEERKT_PNS_9enable_ifINS0_11path_traits11is_pathableINS_5decayIS4_E4typeEEEvE4typeE[_ZN5boost10filesystem4pathC5IPcEERKT_PNS_9enable_ifINS0_11path_traits11is_pathableINS_5decayIS4_E4typeEEEvE4typeE]+0x22): undefined reference to boost :: f ilesystem :: path :: codecvt () ‘collect2: ld a renvoyé 1 état de sortie

Je ne comprends pas ..

J’ai eu le même problème hier:

Comment j’ai résolu:

Premièrement: si vous avez installé Boost par source, assurez-vous de le comstackr dans le bon jeu d’outils du compilateur que vous utilisez sur netbeans. Par exemple, je l’ai testé avec MinGW @ Windows 8 Boost / MingW .

Deuxièmement: dans Netbeans (j’ai utilisé la version 7.4), j’ai ajouté manuellement les bibliothèques que je veux:

Propriétés du projet> Éditeur de liens> Bibliothèques> Ajouter une bibliothèque> Sélectionnez les fichiers .a.

MODIFIER:

Ce lien peut être utile: référence indéfinie avec boost lorsque j’essaie de comstackr

Génial, donc finalement cela a fonctionné, voici ce que j’ai fait: 1- Installé gcc 4.8 (je ne sais pas si cela est pertinent). 2- téléchargé et décompressé boost dans / usr / local 3- couru bootstrap.sh 4- modifier le paramètre jeu d’outils dans project-config.jam en utilisant gcc: 4.8.1: g ++ – 4.8; 5- exécuter ./b2 –with-system 6- exécuter ./b2 –with-filesystem les étapes 5 et 6 sont exécutées avec l’utilisateur root. 7- Comstackz le fichier source comme ceci:

 # g++-4.8 mr.cpp -L /usr/local/boost_1_55_0/stage/lib -I /usr/local/boost_1_55_0 -lboost_system -lboost_filesystem -o mr 

Enfin, j’étais à quelques minutes de quitter Boost.

Ce qui, à mon avis, a fait la différence, c’est la cohérence du compilateur (ensemble d’outils) et du chemin d’installation, et plus particulièrement de ces deux -L ”