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 :
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;
}
} |