2012-11-19 18 views
2

我正在尝试使用CMake将Boost.Log添加到Boost库文件中,但在尝试链接到我的程序时遇到了问题。使用CMake添加Boost.Log来提升库文件

我在Boost.Log周围添加了一个包装并生成了一个名为libcls_utils.so的共享库。 Boost库(与Boost.Log一起)似乎已经生成,并在正确的位置正确生成了所有.so文件,libcls_utils.so也是如此。
当我尝试链接到我的文件,我得到以下错误:

/media/data/workspace/mdxdev/tmp/staging/i686-mv-linux/usr/lib/libcls_utils.so: undefined reference to `boost::log_mt_posix::sinks::basic_text_file_backend::construct(boost::fil‌​esystem2::basic_path, std::allocator >, boost::filesystem2::path_traits> const&, std::_Ios_Openmode, unsigned long long, boost::function0 const&, bool)

至于我可以告诉大家,我对链接的所有正确的库。有没有人试过这个成功之前?我究竟做错了什么?
我使用CMake 2.8.8,Boost-1.49.0和来自svn trunk的Boost.Log。

+0

你遇到什么烦恼? – Nightfirecat

+0

我已经在Boost.Log中添加了一个包装器,并生成了一个名为libcls_utils.so的共享库。 Boost库(以及Boost.Log)似乎已经构建好,并且能够在正确的位置正确生成所有的.so文件,我的libcls_utils.so也是如此。当我尝试链接我的文件时,我得到: –

+0

/media/data/workspace/mdxdev/tmp/staging/i686-mv-linux/usr/lib/libcls_utils.so:对boost :: log_mt_posix :: sinks的未定义引用:: basic_text_file_backend :: construct(boost :: filesystem2 :: basic_path ,std :: allocator >,boost :: filesystem2 :: path_traits> const&,std :: _ Ios_Openmode ,unsigned long long,boost :: function0 const&,bool)' 据我所知,我正在链接所有正确的库。 –

回答

0

您可能需要定义BOOST_LOG_DYN_LINK

g++ -DBOOST_LOG_DYN_LINK blog.cpp -lboost_log -lpthread