namespace undefined reference - C++ - Programmation
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.
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
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
Marsh Posté le 08-10-2012 à 14:09:14
Bonjour
Je sèche sur un
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
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
#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++