2017-05-01 1 views
0

Essayer de construire le prochain programme qui utilisent Boost :: bibliothèque et d'essayer de créer un nouvel enregistreur:C++ - Erreur Boost.Log avec espaces de noms

#include <string> 
#include <boost/log/core.hpp> 
#include <boost/log/trivial.hpp> 
#include <boost/log/expressions.hpp> 

class TestClass 
{  
    ...   
    boost::log::sources::logger lg; 
}; 

Mon fichier Cmake pour la construction de ce fichier:

set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED ON) 
set(Boost_USE_STATIC_RUNTIME OFF) 

find_package(Boost 1.63.0 
      COMPONENTS system 
         filesystem 
         log 
         log_setup 
         thread 
         unit_test_framework 
      REQUIRED) 

include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) 

file(GLOB PROJECT_SOURCES sources/*.cpp 
          sources/configuration/*.cpp) 
file(GLOB PROJECT_HEADERS sources/*.h 
          sources/configuration/*.h) 

add_executable(${PROJECT_NAME} 
       ${PROJECT_SOURCES} 
       ${PROJECT_HEADERS}) 
target_link_libraries(${PROJECT_NAME} 
         ${Boost_LIBRARIES} 
         Boost::log) 

Mais pendant la liaison, je reçois l'erreur suivante:

error: 'logger' in namespace 'boost::log::v2_mt_nt5::sources' does not name a type 
     boost::log::sources::logger log; 

Pourquoi mon espace de noms boost::log::sources est converti en boost::log::v2_mt_nt5::sources? Comment résoudre ce problème?

+0

t-il avec 'Boost :: log'' l'intérieur target_link_libraries'? Je reçois un message d'erreur qu'il ne peut pas trouver 'Boost :: log.lib' –

Répondre

1

Vous il manque tout simplement une directive include:

#include <boost/log/sources/logger.hpp> 
+0

En effet. Maintenant ça marche. Le même fichier est manquant dans l'exemple boost. – Serbin