2013-03-03 6 views
0

J'essaie d'utiliser le système de fichiers boost sur mon Mac. Je n'ajouté l'en-tête suivant et ai eu une erreur quand j'ai essayé de compilererreur sur le système de fichiers boost

# include <boost/filesystem.hpp> 

l'erreur est

Undefined symbols for architecture x86_64: 
"boost::system::generic_category()", referenced from: 
__static_initialization_and_destruction_0(int, int) in cclyDZox.o 
"boost::system::system_category()", referenced from: 
__static_initialization_and_destruction_0(int, int) in cclyDZox.o 
ld: symbol(s) not found for architecture x86_64 
collect2: error: ld returned 1 exit status 

toute aide est appréciée

+0

ne vous oublie pas les drapeaux -lboost_system et -lboost_filesystem lors de la liaison? – toch

Répondre

1

Je pense que vous devriez faire

g++ -I~/Documents/boost_1_53_0/include -L~/Documents/boost_1_53_0/stage/lib -std=c++11 test1ver1.cpp -lboost_filesystem -lboost_system 

Le

  • -I points de drapeau à l'endroit où les en-têtes de Boost sont
  • -L points de drapeau à l'endroit où les libs Boost sont
  • -lboost_filesystem et -lboost_system drapeaux ont permis le lien de vos binaires et systèmes de fichiers Boost et du système des bibliothèques partagées. (Celles-ci devraient être toujours après que l'objet ou les fichiers sources)

Par exemple:

#include <boost/filesystem.hpp> 

int main() { 
    boost::filesystem::path path_household_csv("./test"); 
} 
+0

Merci pour votre réponse. – user2085646

+0

Merci pour votre réponse. J'ai fait comme vous l'avez dit et j'ai toujours la même erreur ld: bibliothèque introuvable pour -lboost_system collect2: erreur: ld a renvoyé 1 statut de sortie – user2085646

+0

Ai-je raté quelque chose? Je suis ravi - j'apprécie votre aide – user2085646

3

Vous devez ajouter la bibliothèque boost_system:

-lboost_system 

à votre commande de construction. Notez que vous devrez également fournir la bibliothèque -lboost_system aussi.

Si votre projet construit par la suite, mais couine avec quelque chose comme

dyld: Library not loaded: libboost_filesystem.dylib 

vous avez juste besoin de la variable d'environnement

DYLD_LIBRARY_PATH 

d'inclure votre

$BOOST_HOME/lib 
répertoire

comme mentionné here .

Questions connexes