Opened 11 years ago

Last modified 11 years ago

#6588 new Bugs

boost::wave list_includes sample will not link with cpplexer

Reported by: Joe Kerian <jkerian+boost@…> Owned by: Hartmut Kaiser
Milestone: To Be Determined Component: wave
Version: Boost 1.48.0 Severity: Problem
Keywords: Cc:

Description

After working around a jamfile problem where none of the wave samples will build(ticket will be posted shortly after this), list_includes (among others) still refuses to link.

This is with VS10 on WindowsXP, Boost 1.48.0 having been built succesfully with --build-type=complete, but not installed.

I apologize for the nasty formatting, but the Command Prompt just isn't very helpful.

C:\boost_1_48_0>b2.exe libs\wave\samples -q
...patience...
...patience...
...patience...
...found 2677 targets...
...updating 7 targets...
msvc.link bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-static\threading-multi\list_includes.exe
   Creating library bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-o
n\link-static\threading-multi\list_includes.lib and object bin.v2\libs\wave\samples\list_includes\bu
ild\msvc-10.0\debug\asynch-exceptions-on\link-static\threading-multi\list_includes.exp
list_includes.obj : error LNK2019: unresolved external symbol "public: static struct boost::wave::cp
plexer::lex_input_interface<class boost::wave::cpplexer::lex_token<struct boost::wave::util::file_po
sition<class boost::wave::util::flex_string<char,struct std::char_traits<char>,class std::allocator<
char>,class boost::wave::util::CowString<class boost::wave::util::AllocatorStringStorage<char,class
std::allocator<char> >,char *> > > > > * __cdecl boost::wave::cpplexer::lexertl::new_lexer_gen<class
 std::_String_iterator<char,struct std::char_traits<char>,class std::allocator<char> >,struct boost:
:wave::util::file_position<class boost::wave::util::flex_string<char,struct std::char_traits<char>,c
lass std::allocator<char>,class boost::wave::util::CowString<class boost::wave::util::AllocatorStrin
gStorage<char,class std::allocator<char> >,char *> > > >::new_lexer(class std::_String_iterator<char
,struct std::char_traits<char>,class std::allocator<char> > const &,class std::_String_iterator<char
,struct std::char_traits<char>,class std::allocator<char> > const &,struct boost::wave::util::file_p
osition<class boost::wave::util::flex_string<char,struct std::char_traits<char>,class std::allocator
<char>,class boost::wave::util::CowString<class boost::wave::util::AllocatorStringStorage<char,class
 std::allocator<char> >,char *> > > const &,enum boost::wave::language_support)" (?new_lexer@?$new_l
exer_gen@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$file_position@V?$flex_
string@DU?$char_traits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringStorage@DV?$allocator@
D@std@@@util@wave@boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@wave@boost@@@lexertl@cpplexer@
wave@boost@@SAPAU?$lex_input_interface@V?$lex_token@U?$file_position@V?$flex_string@DU?$char_traits@
D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringStorage@DV?$allocator@D@std@@@util@wave@boost
@@PAD@util@wave@boost@@@util@wave@boost@@@util@wave@boost@@@cpplexer@wave@boost@@@345@ABV?$_String_i
terator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0ABU?$file_position@V?$flex_string@DU?$char_tr
aits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringStorage@DV?$allocator@D@std@@@util@wave@
boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@45@W4language_support@45@@Z) referenced in funct
ion "public: static struct boost::wave::cpplexer::lex_input_interface<class boost::wave::cpplexer::l
ex_token<struct boost::wave::util::file_position<class boost::wave::util::flex_string<char,struct st
d::char_traits<char>,class std::allocator<char>,class boost::wave::util::CowString<class boost::wave
::util::AllocatorStringStorage<char,class std::allocator<char> >,char *> > > > > * __cdecl boost::wa
ve::cpplexer::lexertl::lexertl_input_interface<class boost::wave::cpplexer::lex_token<struct boost::
wave::util::file_position<class boost::wave::util::flex_string<char,struct std::char_traits<char>,cl
ass std::allocator<char>,class boost::wave::util::CowString<class boost::wave::util::AllocatorString
Storage<char,class std::allocator<char> >,char *> > > > >::new_lexer<class std::_String_iterator<cha
r,struct std::char_traits<char>,class std::allocator<char> > >(class std::_String_iterator<char,stru
ct std::char_traits<char>,class std::allocator<char> > const &,class std::_String_iterator<char,stru
ct std::char_traits<char>,class std::allocator<char> > const &,struct boost::wave::util::file_positi
on<class boost::wave::util::flex_string<char,struct std::char_traits<char>,class std::allocator<char
>,class boost::wave::util::CowString<class boost::wave::util::AllocatorStringStorage<char,class std:
:allocator<char> >,char *> > > const &,enum boost::wave::language_support)" (??$new_lexer@V?$_String
_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@?$lexertl_input_interface@V?$lex_token@U?$f
ile_position@V?$flex_string@DU?$char_traits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringS
torage@DV?$allocator@D@std@@@util@wave@boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@wave@boos
t@@@cpplexer@wave@boost@@@lexertl@cpplexer@wave@boost@@SAPAU?$lex_input_interface@V?$lex_token@U?$fi
le_position@V?$flex_string@DU?$char_traits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringSt
orage@DV?$allocator@D@std@@@util@wave@boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@wave@boost
@@@cpplexer@wave@boost@@@234@ABV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0AB
U?$file_position@V?$flex_string@DU?$char_traits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStr
ingStorage@DV?$allocator@D@std@@@util@wave@boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@34@W4
language_support@34@@Z)
bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-static\thread
ing-multi\list_includes.exe : fatal error LNK1120: 1 unresolved externals

        call "c:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 >nul
link /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X86 /subsystem:console /out:"bin.v2\libs\wave\samples\l
ist_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-static\threading-multi\list_includes.ex
e"   @"bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-static
\threading-multi\list_includes.exe.rsp"
        if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%

...failed msvc.link bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-o
n\link-static\threading-multi\list_includes.exe bin.v2\libs\wave\samples\list_includes\build\msvc-10
.0\debug\asynch-exceptions-on\link-static\threading-multi\list_includes.pdb...
...removing bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-s
tatic\threading-multi\list_includes.pdb
...failed updating 1 target...

C:\boost_1_48_0>

Change History (1)

comment:1 by Brian Budge <brian.budge@…>, 11 years ago

I get a similar linking error with gcc 4.6.1:

list_includes.o: In function `boost::wave::cpplexer::lex_input_interface<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::allocator<char> >, char*> > > > >* boost::wave::cpplexer::lexertl::lexertl_input_interface<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::allocator<char> >, char*> > > > >::new_lexer<gnu_cxx::normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(gnu_cxx::normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, gnu_cxx::normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::wave::util::file_position<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::allocator<char> >, char*> > > const&, boost::wave::language_support)': list_includes.cpp:(.text._ZN5boost4wave8cpplexer7lexertl23lexertl_input_interfaceINS1_9lex_tokenINS0_4util13file_positionINS5_11flex_stringIcSt11char_traitsIcESaIcENS5_9CowStringINS5_22AllocatorStringStorageIcSA_EEPcEEEEEEEEE9new_lexerIN9gnu_cxx17normal_iteratorISE_SsEEEEPNS1_19lex_input_interfaceISI_EERKT_ST_RKSH_NS0_16language_supportE[boost::wave::cpplexer::lex_input_interface<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::allocator<char> >, char*> > > > >* boost::wave::cpplexer::lexertl::lexertl_input_interface<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::allocator<char> >, char*> > > > >::new_lexer<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::wave::util::file_position<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::allocator<char> >, char*> > > const&, boost::wave::language_support)]+0x2a): undefined reference to `boost::wave::cpplexer::lexertl::new_lexer_gen<gnu_cxx::normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::wave::util::file_position<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::allocator<char> >, char*> > > >::new_lexer(gnu_cxx::normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, gnu_cxx::normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::wave::util::file_position<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::allocator<char> >, char*> > > const&, boost::wave::language_support)' collect2: ld returned 1 exit status

Note: See TracTickets for help on using tickets.