namespace undefined reference

namespace undefined reference - C++ - Programmation

Marsh Posté le 08-10-2012 à 14:09:14    

Bonjour
 
Je sèche sur un

Citation :

undefined reference to fvsdk::msg::error()


Les sources sont bien présentes au bon endroit, on definit le namespace dans deux fichiers .hpp et .cpp Voici une partie des fichiers
 

Citation :

fichier .cpp
namespace fvsdk
{
 
    namespace msg
    {
........
 
      Message  error()
        {
 
             void  initialize_message(const message_opts_t& message_opts)
        {
            return Message(MESSAGE_DEFAULT_ERROR_PREFIX, (get_message_opts().logging == LOGGING_STDOUT ? Message::MESSAGE_DEFAULT_ERROR_PREFIX_COLOR : Message::NOCOLOR), select_output(msg::MESSAGE_WARNING, cerr), 1, 1, (get_message_opts().logging != LOGGING_NONE));
        }


 
fichier .hpp

Citation :

#define VUNACTIVE(maxlevel)                 (get_message_opts().verbose_maxlevel < maxlevel ? fvsdk::msg::Message::noactive : fvsdk::msg::Message::active)
#define VACTIVE(maxlevel)                   (get_message_opts().verbose_maxlevel < maxlevel ? fvsdk::msg::Message::active : fvsdk::msg::Message::noactive)
#define DUNACTIVE(maxlevel)                 (get_message_opts().debug_maxlevel < maxlevel ? fvsdk::msg::Message::noactive : fvsdk::msg::Message::active)
#define DACTIVE(maxlevel)                   (get_message_opts().debug_maxlevel < maxlevel ? fvsdk::msg::Message::active : fvsdk::msg::Message::noactive)
 
namespace fvsdk
{
 
    namespace msg
    {...
       FVSDKCOMMON_DECLSPEC std::ostream&  default_stdout();
 
        /* duplicate tools::replace_string to avoid cross header inclusion */
        FVSDKCOMMON_DECLSPEC std::string&   message_replace_string(std::string& base_s, const std::string& sub_s, const std::string& replace_s, bool all = true);
.........
        FVSDKCOMMON_DECLSPEC Message            error();
........
 


 
 
Avez vous des pistes? Merci faut il que je regarde mes options de compilations? Lesquelles je connais tres mal le c++
 
 

Reply

Marsh Posté le 08-10-2012 à 14:09:14   

Reply

Marsh Posté le 08-10-2012 à 16:10:19    

c'est un problème de link, pas de compilation à proprement parler.
Quand tu produis ton binaire (que ce soit un exécutable ou une bibliothèque dynamique) assure-toi que tu utilises bien le fichier obj généré à partir du CPP que tu cites ou que tu utilises bien la bibliothèque statique fournie avec ton sdk si besoin.


Message édité par theshockwave le 08-10-2012 à 16:10:44

---------------
last.fm
Reply

Marsh Posté le 08-10-2012 à 18:53:06    

Je lance :
/bin/sh ../../libtool --tag=CXX   --mode=link /opt/a/Vision/bin/g++ -I../../src/common -I../../src -I../../src -I/opt/a/Vision/include -DFVSDK_HAVE_CONFIG_H  -I/opt/a/Vision/include/libxml2 -I/opt/a/Vision/include -I/opt/a/Vision/include/boost-1_33_1 -pthread -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS  -DSDK_LIBEXECDIR='"/opt/a/Vision/libexec"' -DLIBDIR='"/opt/a/Vision/lib"' -DCONFIG_DIR='"/etc"' -DPLUGINS_DIR='"/var/v_c"' -DLOGFILE_DIR='"/var/log"' -DDATA_DIR='"/opt/a/Vision/share/v_c"'   -O2 -pipe -Wall -W -ansi  -rpath "/var/v_c/lib"  -o v_c main.o ../../src/v_c/lib/libv_c.la -ldl
Je maitrise pas du tout: que signifie, sachant que v_c est un repertoire, "o v_c main.o" je crée mon executable main.o dans v_c

Reply

Marsh Posté le 08-10-2012 à 19:04:54    

techniquement, ca devrait plutôt vouloir dire "crée un exécutable nommé v_c à partir de l'objet main.o et de la bibliothèque libv_c.la"
Donc si v_c est un dossier, ca peut poser problème, peut-être.


---------------
last.fm
Reply

Marsh Posté le 09-10-2012 à 10:31:18    

non tu as raison c'est bien un executable

Reply

Marsh Posté le 09-10-2012 à 14:38:48    

cela dit, ce fichier .cpp dont tu copies une partie dans ton premier post. Il s'appelle comment et il est situé où ? Parce qu'ici, à moins que ce soit main.cpp, ou qu'il soit partie intégrante de libv_c, il manque à l'appel.


---------------
last.fm
Reply

Marsh Posté le 11-10-2012 à 15:58:33    

j'ai trouvé la solution il manquait des lien
 
-L/opt/a/v/lib -lxml2 -lm -L/opt/a/v/lib -lcurl -L/opt/a/v/lib -lssl -lcrypto -ldl -L/opt/a/v/lib -pthread -lboost_thread-gcc-mt -lboost_regex-gcc-mt -L/opt/a/v/lib -lfvsdkcommon

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed