Bonjour,
Je suis confronté à une erreur de link que je ne m'explique pas ...
Voici mon programme :
Il s'agit ni plus ni moins que du tutorial sur program_option que l'on peut trouver sur le site web de IBM...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <boost/program_options.hpp> #include <boost/program_options/options_description.hpp> #include <string> #include <iostream> using namespace std; using namespace boost::program_options; int main(int argc, char **argv) { boost::program_options::options_description options("command line options"); options.add_options() ("help", "Use -h or --help to list all arguments") ("file", boost::program_options::value<string>(), "Provide input file name"); boost::program_options::variables_map vmap; boost::program_options::store( boost::program_options::parse_command_line(argc, argv, options), vmap); boost::program_options::notify(vmap); if (vmap.count("help")) { cout << options << endl; } return 0; }
Je compile à l'aide d'un CMAKE dont voici les parties interessantes :
La sortie du cmake est bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 find_package(Boost COMPONENTS program_options) include_directories(${Boost_INCLUDE_DIRS}) message("BL : " ${Boost_LIBRARIES}) target_link_libraries(Extracteur ${Geographic_LIBRARIES} ${Boost_LIBRARIES} dl)
BL : /usr/local/lib/libboost_program_options.so
ce qui signifie qu'il a trouvé la bonne librairie.
Ensuite, je tape make, et mon programme ce compile, par contre à l'édition des liens j'ai le message suivant :
Donc, il le trouve dans le .hpp mais pas dans le .so...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 main.cpp:(.text+0x55): undefined reference to `boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
J'ai aussi essayé de compiler avec la version ".hpp" only de boost, mais le problème est pire... Car dans ce cas, il ne trouve aucun des symboles de toute la libraire boost::program_options.
Toute aide sera la bienvenu,
Cordialement,
Adrien BARRAL
REETI's development team
http://www.reeti.fr
Partager