我尝试将Boost.Log编译为boost_1_52_0。一旦我开始执行以下命令:
C:\ boost_1_52_0> bjam --with-log variant = debug define = BOOST_LOG_USE_CHAR define = B OOST_LOG_USE_WINNT6_API阶段--build-type = complete --link = 执行配置检查
编译没有完成,并且生成了较少的lib文件,一旦我编写了一个hello world程序来使用boost.log,就会出现错误“错误2错误LNK1104:无法打开文件”libboost_log-vc100-mt-gd- 1_52.lib”。
以下是输出:
- has_icu builds : no
Component configuration:
- chrono : not building
- context : not building
- date_time : not building
- exception : not building
- filesystem : not building
- graph : not building
- graph_parallel : not building
- iostreams : not building
- locale : not building
- log : building
- math : not building
- mpi : not building
- program_options : not building
- python : not building
- random : not building
- regex : not building
- serialization : not building
- signals : not building
- system : not building
- test : not building
- thread : not building
- timer : not building
- wave : not building
...patience...
...patience...
...patience...
...found 9657 targets...
...updating 17 targets...
compile-c-c++ bin.v2\libs\log\build\msvc-10.0\debug\threading-multi\text_file_ba
ckend.obj
text_file_backend.cpp
libs\log\src\text_file_backend.cpp(956) : warning C4244: 'initializing' : conver
sion from 'unsigned short' to 'unsigned char', possible loss of data
libs\log\src\text_file_backend.cpp(1197) : error C2039: 'get_generic_category' :
is not a member of 'boost::system'
libs\log\src\text_file_backend.cpp(1169) : while compiling class templat
e member function 'void boost::log_mt_nt6::sinks::basic_text_file_backend<CharT>
::do_consume(const boost::log_mt_nt6::basic_record<CharT> &,const std::basic_str
ing<_Elem,_Traits,_Ax> &)'
with
[
CharT=char,
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
libs\log\src\text_file_backend.cpp(1439) : see reference to class templa
te instantiation 'boost::log_mt_nt6::sinks::basic_text_file_backend<CharT>' bein
g compiled
with
[
CharT=char
]
libs\log\src\text_file_backend.cpp(1197) : error C3861: 'get_generic_category':
identifier not found
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 >n
ul
cl /Zm800 -nologo @"bin.v2\libs\log\build\msvc-10.0\debug\threading-multi\text_f
ile_backend.obj.rsp"
...failed compile-c-c++ bin.v2\libs\log\build\msvc-10.0\debug\threading-multi\te
xt_file_backend.obj...
...skipped <pbin.v2\libs\log\build\msvc-10.0\debug\threading-multi>boost_log-vc1
00-mt-gd-1_52.dll for lack of <pbin.v2\libs\log\build\msvc-10.0\debug\threading-
multi>text_file_backend.obj...
...skipped <pbin.v2\libs\log\build\msvc-10.0\debug\threading-multi>boost_log-vc1
00-mt-gd-1_52.lib for lack of <pbin.v2\libs\log\build\msvc-10.0\debug\threading-
multi>text_file_backend.obj...
...skipped <pbin.v2\libs\log\build\msvc-10.0\debug\threading-multi>boost_log-vc1
00-mt-gd-1_52.pdb for lack of <pbin.v2\libs\log\build\msvc-10.0\debug\threading-
multi>text_file_backend.obj...
...skipped <pstage\lib>boost_log-vc100-mt-gd-1_52.dll for lack of <pbin.v2\libs\
log\build\msvc-10.0\debug\threading-multi>boost_log-vc100-mt-gd-1_52.dll...
...skipped <pstage\lib>boost_log-vc100-mt-gd-1_52.lib for lack of <pbin.v2\libs\
log\build\msvc-10.0\debug\threading-multi>boost_log-vc100-mt-gd-1_52.lib...
...skipped <pbin.v2\libs\log\build\msvc-10.0\debug\threading-multi>boost_log_set
up-vc100-mt-gd-1_52.dll for lack of <pbin.v2\libs\log\build\msvc-10.0\debug\thre
ading-multi>boost_log-vc100-mt-gd-1_52.lib...
...skipped <pbin.v2\libs\log\build\msvc-10.0\debug\threading-multi>boost_log_set
up-vc100-mt-gd-1_52.lib for lack of <pbin.v2\libs\log\build\msvc-10.0\debug\thre
ading-multi>boost_log-vc100-mt-gd-1_52.lib...
...skipped <pbin.v2\libs\log\build\msvc-10.0\debug\threading-multi>boost_log_set
up-vc100-mt-gd-1_52.pdb for lack of <pbin.v2\libs\log\build\msvc-10.0\debug\thre
ading-multi>boost_log-vc100-mt-gd-1_52.lib...
...skipped <pstage\lib>boost_log_setup-vc100-mt-gd-1_52.dll for lack of <pbin.v2
\libs\log\build\msvc-10.0\debug\threading-multi>boost_log_setup-vc100-mt-gd-1_52
.dll...
...skipped <pstage\lib>boost_log_setup-vc100-mt-gd-1_52.lib for lack of <pbin.v2
\libs\log\build\msvc-10.0\debug\threading-multi>boost_log_setup-vc100-mt-gd-1_52
.lib...
compile-c-c++ bin.v2\libs\log\build\msvc-10.0\debug\link-static\threading-multi\
text_file_backend.obj
text_file_backend.cpp
libs\log\src\text_file_backend.cpp(956) : warning C4244: 'initializing' : conver
sion from 'unsigned short' to 'unsigned char', possible loss of data
libs\log\src\text_file_backend.cpp(1197) : error C2039: 'get_generic_category' :
is not a member of 'boost::system'
libs\log\src\text_file_backend.cpp(1169) : while compiling class templat
e member function 'void boost::log_mt_nt6::sinks::basic_text_file_backend<CharT>
::do_consume(const boost::log_mt_nt6::basic_record<CharT> &,const std::basic_str
ing<_Elem,_Traits,_Ax> &)'
with
[
CharT=char,
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
libs\log\src\text_file_backend.cpp(1439) : see reference to class templa
te instantiation 'boost::log_mt_nt6::sinks::basic_text_file_backend<CharT>' bein
g compiled
with
[
CharT=char
]
libs\log\src\text_file_backend.cpp(1197) : error C3861: 'get_generic_category':
identifier not found
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 >n
ul
cl /Zm800 -nologo @"bin.v2\libs\log\build\msvc-10.0\debug\link-static\threading-
multi\text_file_backend.obj.rsp"
...failed compile-c-c++ bin.v2\libs\log\build\msvc-10.0\debug\link-static\thread
ing-multi\text_file_backend.obj...
...skipped <pbin.v2\libs\log\build\msvc-10.0\debug\link-static\threading-multi>l
ibboost_log-vc100-mt-gd-1_52.lib for lack of <pbin.v2\libs\log\build\msvc-10.0\d
ebug\link-static\threading-multi>text_file_backend.obj...
...skipped <pstage\lib>libboost_log-vc100-mt-gd-1_52.lib for lack of <pbin.v2\li
bs\log\build\msvc-10.0\debug\link-static\threading-multi>libboost_log-vc100-mt-g
d-1_52.lib...
compile-c-c++ bin.v2\libs\log\build\msvc-10.0\debug\link-static\runtime-link-sta
tic\threading-multi\text_file_backend.obj
text_file_backend.cpp
libs\log\src\text_file_backend.cpp(956) : warning C4244: 'initializing' : conver
sion from 'unsigned short' to 'unsigned char', possible loss of data
libs\log\src\text_file_backend.cpp(1197) : error C2039: 'get_generic_category' :
is not a member of 'boost::system'
libs\log\src\text_file_backend.cpp(1169) : while compiling class templat
e member function 'void boost::log_mt_nt6::sinks::basic_text_file_backend<CharT>
::do_consume(const boost::log_mt_nt6::basic_record<CharT> &,const std::basic_str
ing<_Elem,_Traits,_Ax> &)'
with
[
CharT=char,
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
libs\log\src\text_file_backend.cpp(1439) : see reference to class templa
te instantiation 'boost::log_mt_nt6::sinks::basic_text_file_backend<CharT>' bein
g compiled
with
[
CharT=char
]
libs\log\src\text_file_backend.cpp(1197) : error C3861: 'get_generic_category':
identifier not found
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 >n
ul
cl /Zm800 -nologo @"bin.v2\libs\log\build\msvc-10.0\debug\link-static\runtime-li
nk-static\threading-multi\text_file_backend.obj.rsp"
...failed compile-c-c++ bin.v2\libs\log\build\msvc-10.0\debug\link-static\runtim
e-link-static\threading-multi\text_file_backend.obj...
...skipped <pbin.v2\libs\log\build\msvc-10.0\debug\link-static\runtime-link-stat
ic\threading-multi>libboost_log-vc100-mt-sgd-1_52.lib for lack of <pbin.v2\libs\
log\build\msvc-10.0\debug\link-static\runtime-link-static\threading-multi>text_f
ile_backend.obj...
...skipped <pstage\lib>libboost_log-vc100-mt-sgd-1_52.lib for lack of <pbin.v2\l
ibs\log\build\msvc-10.0\debug\link-static\runtime-link-static\threading-multi>li
bboost_log-vc100-mt-sgd-1_52.lib...
...failed updating 3 targets...
...skipped 14 targets...
答案 0 :(得分:3)
经过几个小时的尝试,Boost 1.52.0上的boost filesyetem V3出现了问题,这与boost.log版本1.1不兼容。因此,需要使用“svn”下载Boost.Log v2中继。该命令如下:
svn co https://boost-log.svn.sourceforge.net/svnroot/boost-log boost-log
然后,我执行以下步骤:
手指交叉,您可能会在编辑结束时收到以下消息。
...
compile-c-c++ bin.v2\libs\log\build\msvc-10.0\release\link-static\threading-mult
i\default_filter_factory.obj
default_filter_factory.cpp
msvc.archive bin.v2\libs\log\build\msvc-10.0\release\link-static\threading-multi
\libboost_log_setup-vc100-mt-1_52.lib
common.copy stage\lib\libboost_log_setup-vc100-mt-1_52.lib
bin.v2\libs\log\build\msvc-10.0\release\link-static\threading-multi\libboost_log
_setup-vc100-mt-1_52.lib
1 file(s) copied.
...updated 87 targets...
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
D:/boost_1_52_0
The following directory should be added to linker library paths:
D:\boost_1_52_0\stage\lib
答案 1 :(得分:2)
此版本的Boost.Log使用已弃用的'get_generic_category()'函数,该函数现已从Boost.System中删除。因此,您可以降级Boost,也可以手动修补Boost.Log,将get_generic_category()
更改为generic_category()
(以及get_system_category()
更改为system_category()
等。
UPDATE 似乎我错了:根据documentation,除非定义了BOOST_SYSTEM_NO_DEPRECATED,否则上述函数仍然存在。因此,请检查Boost.Log是否定义了它。