Bonjour,

Je suis confronté à une erreur de link que je ne m'explique pas ...

Voici mon programme :
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;
}
Il s'agit ni plus ni moins que du tutorial sur program_option que l'on peut trouver sur le site web de IBM...

Je compile à l'aide d'un CMAKE dont voici les parties interessantes :
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)
La sortie du cmake est bien :

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 :
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)'
Donc, il le trouve dans le .hpp mais pas dans le .so...
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