problème linkage boost filesystem
Bonjour à tous,
je ne savais pas trop où poster ce problème mais je pense que c'est l'endroit le plus approprié. le titre du post est on ne peut plus explicite ;) j'ai de très nombreuses erreurs lorsque j'essaie de compiler un code utilisant boost::filesystem.
Je suis sur codeblocks sur windows 7 (64 bits) pour ceux que ça intéresse, et voici un code pris directement sur le site de boost qui entraîne un tas d'erreurs :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#include <iostream>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/convenience.hpp>
void iterThroughDirectories(const boost::filesystem::path& path);
int main( int argc, char *argv[])
{
iterThroughDirectories(boost::filesystem::initial_path());
}
void iterThroughDirectories(const boost::filesystem::path& path)
{
std::cout << "Entering : " << path.string() << std::endl;
for(boost::filesystem::directory_iterator it(path); it != boost::filesystem::directory_iterator(); ++it)
{
if(boost::filesystem::is_directory(*it))
{
iterThroughDirectories(*it);
}
else if(boost::filesystem::extension(*it) == ".exe")
{
boost::filesystem::path newfile = boost::filesystem::change_extension(*it, ".bak");
boost::filesystem::copy_file(*it, newfile);
}
}
} |
Voici les erreurs de link :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| obj\Release\main.o: dans la fonction « _ZNK5boost10filesystem4path6stringEv »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/path.hpp:367: référence indéfinie vers « __imp___ZN5boost10filesystem4path7codecvtEv »
obj\Release\main.o: dans la fonction « directory_iterator »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/operations.hpp:682: référence indéfinie vers « __imp___ZN5boost10filesystem6detail28directory_iterator_constructERNS0_18directory_iteratorERKNS0_4pathEPNS_6system10error_codeE »
obj\Release\main.o: dans la fonction « path<boost::filesystem::directory_entry> »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/path.hpp:139: référence indéfinie vers « __imp___ZN5boost10filesystem11path_traits8dispatchERKNS0_15directory_entryERSbIwSt11char_traitsIwESaIwEERKSt7codecvtIwciE »
obj\Release\main.o: dans la fonction « _ZN5boost10filesystem18directory_iterator9incrementEv »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/operations.hpp:718: référence indéfinie vers « __imp___ZN5boost10filesystem6detail28directory_iterator_incrementERNS0_18directory_iteratorEPNS_6system10error_codeE »
obj\Release\main.o: dans la fonction « is_directory »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/operations.hpp:294: référence indéfinie vers « __imp___ZN5boost10filesystem6detail6statusERKNS0_4pathEPNS_6system10error_codeE »
obj\Release\main.o: dans la fonction « extension »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/convenience.hpp:36: référence indéfinie vers « __imp___ZNK5boost10filesystem4path9extensionEv »
obj\Release\main.o: dans la fonction « change_extension »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/convenience.hpp:47: référence indéfinie vers « __imp___ZN5boost10filesystem4path17replace_extensionERKS1_ »
obj\Release\main.o: dans la fonction « copy_file »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/operations.hpp:384: référence indéfinie vers « __imp___ZN5boost10filesystem6detail9copy_fileERKNS0_4pathES4_NS0_11copy_optionEPNS_6system10error_codeE »
obj\Release\main.o: dans la fonction « _ZNK5boost10filesystem4path6stringERKSt7codecvtIwciE »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/path.hpp:373: référence indéfinie vers « __imp___ZN5boost10filesystem11path_traits7convertEPKwS3_RSsRKSt7codecvtIwciE »
obj\Release\main.o: dans la fonction « dispatch<std::basic_string<wchar_t> > »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/path_traits.hpp:174: référence indéfinie vers « __imp___ZN5boost10filesystem11path_traits7convertEPKcS3_RSbIwSt11char_traitsIwESaIwEERKSt7codecvtIwciE »
obj\Release\main.o: dans la fonction « _ZNK5boost10filesystem4path6stringERKSt7codecvtIwciE »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/path.hpp:373: référence indéfinie vers « __imp___ZN5boost10filesystem11path_traits7convertEPKwS3_RSsRKSt7codecvtIwciE »
obj\Release\main.o: dans la fonction « ~dir_itr_imp »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/operations.hpp:651: référence indéfinie vers « __imp___ZN5boost10filesystem6detail13dir_itr_closeERPv »
obj\Release\main.o: dans la fonction « _ZN5boost10filesystem6detail11dir_itr_impD1Ev »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/operations.hpp:651: référence indéfinie vers « __imp___ZN5boost10filesystem6detail13dir_itr_closeERPv »
obj\Release\main.o: dans la fonction « initial_path »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/filesystem/operations.hpp:459: référence indéfinie vers « __imp___ZN5boost10filesystem6detail12initial_pathEPNS_6system10error_codeE »
obj\Release\main.o: dans la fonction « __static_initialization_and_destruction_0 »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/system/error_code.hpp:214: référence indéfinie vers « __imp___ZN5boost6system16generic_categoryEv »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/system/error_code.hpp:216: référence indéfinie vers « __imp___ZN5boost6system15system_categoryEv » |
J'ai essayé de me renseigner sur internet mais je n'ai rien trouvé de probant.
Si quelqu'un a déjà eu ce genre de problème qu'il n'hésite pas à me dire comment il a fait pour le résoudre car, étant sur la version 1.52 de boost avec gcc 4.7 je ne vois pas ce qui cloche !
J'ajouterai également que l'utilisation de boost/regex pose également le même genre de problèmes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/perl_matcher_non_recursive.hpp:1117: référence indéfinie vers « __imp___ZN5boost9re_detail13put_mem_blockEPv »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail11raw_storage6extendEj »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/regex_raw_buffer.hpp:131: référence indéfinie vers « __imp___ZN5boost9re_detail11raw_storage6resizeEj »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/regex_raw_buffer.hpp:131: référence indéfinie vers « __imp___ZN5boost9re_detail11raw_storage6resizeEj »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail18basic_regex_parserIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE4failENS_15regex_constants10error_typeEiSsi »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_parser.hpp:220: référence indéfinie vers « __imp___ZN5boost11regex_errorC1ERKSsNS_15regex_constants10error_typeEi »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_parser.hpp:221: référence indéfinie vers « __imp___ZNK5boost11regex_error5raiseEv »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_parser.hpp:221: référence indéfinie vers « __imp___ZN5boost11regex_errorD1Ev »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_parser.hpp:221: référence indéfinie vers « __imp___ZN5boost11regex_errorD1Ev »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:793: référence indéfinie vers « __imp___ZN5boost11regex_errorC1ERKSsNS_15regex_constants10error_typeEi »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:794: référence indéfinie vers « __imp___ZNK5boost11regex_error5raiseEv »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:875: référence indéfinie vers « __imp___ZN5boost11regex_errorC1ERKSsNS_15regex_constants10error_typeEi »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:876: référence indéfinie vers « __imp___ZNK5boost11regex_error5raiseEv »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:876: référence indéfinie vers « __imp___ZN5boost11regex_errorD1Ev »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:876: référence indéfinie vers « __imp___ZN5boost11regex_errorD1Ev »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12insert_stateEiNS0_19syntax_element_typeEj »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:321: référence indéfinie vers « __imp___ZN5boost9re_detail11raw_storage6insertEjj »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE15create_startmapEPNS0_14re_syntax_baseEPhPjh »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:1143: référence indéfinie vers « __imp___ZN5boost11regex_errorC1ERKSsNS_15regex_constants10error_typeEi »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:1144: référence indéfinie vers « __imp___ZNK5boost11regex_error5raiseEv »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:1144: référence indéfinie vers « __imp___ZN5boost11regex_errorD1Ev »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:1144: référence indéfinie vers « __imp___ZN5boost11regex_errorD1Ev »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail11raw_storage6extendEj »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/regex_raw_buffer.hpp:131: référence indéfinie vers « __imp___ZN5boost9re_detail11raw_storage6resizeEj »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/regex_raw_buffer.hpp:131: référence indéfinie vers « __imp___ZN5boost9re_detail11raw_storage6resizeEj »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/regex_raw_buffer.hpp:131: référence indéfinie vers « __imp___ZN5boost9re_detail11raw_storage6resizeEj »
obj\Release\main.o: dans la fonction « _ZNK5boost9re_detail31cpp_regex_traits_implementationIcE12error_stringENS_15regex_constants10error_typeE »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:444: référence indéfinie vers « __imp___ZN5boost9re_detail24get_default_error_stringENS_15regex_constants10error_typeE »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail11raise_errorINS_20regex_traits_wrapperINS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEEEvRKT_NS_15regex_constants10error_typeE »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/pattern_except.hpp:75: référence indéfinie vers « __imp___ZN5boost9re_detail19raise_runtime_errorERKSt13runtime_error »
obj\Release\main.o: dans la fonction « _ZNK5boost9re_detail31cpp_regex_traits_implementationIcE12error_stringENS_15regex_constants10error_typeE »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:442: référence indéfinie vers « __imp___ZN5boost9re_detail24get_default_error_stringENS_15regex_constants10error_typeE »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail12perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcSsEESaINS_9sub_matchIS6_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12extend_stackEv »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/perl_matcher_non_recursive.hpp:213: référence indéfinie vers « __imp___ZN5boost9re_detail13get_mem_blockEv »
obj\Release\main.o: dans la fonction « save_state_init »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/perl_matcher_non_recursive.hpp:107: référence indéfinie vers « __imp___ZN5boost9re_detail13get_mem_blockEv »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail12perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcSsEESaINS_9sub_matchIS6_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE9match_impEv »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/perl_matcher_common.hpp:206: référence indéfinie vers « __imp___ZN5boost9re_detail14verify_optionsEjNS_15regex_constants12_match_flagsE »
obj\Release\main.o: dans la fonction « ~save_state_init »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/perl_matcher_non_recursive.hpp:115: référence indéfinie vers « __imp___ZN5boost9re_detail13put_mem_blockEPv »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/perl_matcher_non_recursive.hpp:115: référence indéfinie vers « __imp___ZN5boost9re_detail13put_mem_blockEPv »
obj\Release\main.o: dans la fonction « _ZNK5boost9re_detail31cpp_regex_traits_implementationIcE12error_stringENS_15regex_constants10error_typeE »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:444: référence indéfinie vers « __imp___ZN5boost9re_detail24get_default_error_stringENS_15regex_constants10error_typeE »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:442: référence indéfinie vers « __imp___ZN5boost9re_detail24get_default_error_stringENS_15regex_constants10error_typeE »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16create_startmapsEPNS0_14re_syntax_baseE »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:940: référence indéfinie vers « __imp___ZN5boost11regex_errorC1ERKSsNS_15regex_constants10error_typeEi »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:941: référence indéfinie vers « __imp___ZNK5boost11regex_error5raiseEv »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:941: référence indéfinie vers « __imp___ZN5boost11regex_errorD1Ev »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/basic_regex_creator.hpp:941: référence indéfinie vers « __imp___ZN5boost11regex_errorD1Ev »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail11raw_storage6extendEj »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/regex_raw_buffer.hpp:131: référence indéfinie vers « __imp___ZN5boost9re_detail11raw_storage6resizeEj »
obj\Release\main.o: dans la fonction « _ZNK5boost9re_detail31cpp_regex_traits_implementationIcE18lookup_collatenameEPKcS4_ »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:633: référence indéfinie vers « __imp___ZN5boost9re_detail27lookup_default_collate_nameERKSs »
obj\Release\main.o: dans la fonction « _ZN5boost16cpp_regex_traitsIcE16get_catalog_nameEv »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:1059: référence indéfinie vers « __imp___ZN5boost24scoped_static_mutex_lockC1ERNS_12static_mutexEb »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:1062: référence indéfinie vers « __imp___ZN5boost24scoped_static_mutex_lockD1Ev »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:1062: référence indéfinie vers « __imp___ZN5boost24scoped_static_mutex_lockD1Ev »
obj\Release\main.o: dans la fonction « _ZN5boost9re_detail31cpp_regex_traits_implementationIcE4initEv »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:690: référence indéfinie vers « __imp___ZN5boost9re_detail24get_default_error_stringENS_15regex_constants10error_typeE »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:675: référence indéfinie vers « __imp___ZN5boost9re_detail19raise_runtime_errorERKSt13runtime_error »
obj\Release\main.o: dans la fonction « cpp_regex_traits_char_layer »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/v4/cpp_regex_traits.hpp:366: référence indéfinie vers « __imp___ZN5boost9re_detail27cpp_regex_traits_char_layerIcE4initEv »
obj\Release\main.o: dans la fonction « _ZN5boost12object_cacheINS_9re_detail21cpp_regex_traits_baseIcEENS1_31cpp_regex_traits_implementationIcEEE3getERKS3_j »:
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/pending/object_cache.hpp:66: référence indéfinie vers « __imp___ZN5boost24scoped_static_mutex_lockC1ERNS_12static_mutexEb »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/pending/object_cache.hpp:75: référence indéfinie vers « __imp___ZN5boost24scoped_static_mutex_lockD1Ev »
c:/mingw_/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../include/boost/regex/pending/object_cache.hpp:75: référence indéfinie vers « __imp___ZN5boost24scoped_static_mutex_lockD1Ev » |
Pour ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <boost/regex.hpp>
#include <iostream>
#include <string>
int main()
{
std::string line;
boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
} |