Boost C++ Libraries: Ticket #6588: boost::wave list_includes sample will not link with cpplexer https://svn.boost.org/trac10/ticket/6588 <p> 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. </p> <p> This is with VS10 on WindowsXP, Boost 1.48.0 having been built succesfully with --build-type=complete, but not installed. </p> <p> I apologize for the nasty formatting, but the Command Prompt just isn't very helpful. </p> <pre class="wiki">C:\boost_1_48_0&gt;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&lt;class boost::wave::cpplexer::lex_token&lt;struct boost::wave::util::file_po sition&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt; char&gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorStringStorage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; &gt; &gt; * __cdecl boost::wave::cpplexer::lexertl::new_lexer_gen&lt;class std::_String_iterator&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;,struct boost: :wave::util::file_position&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,c lass std::allocator&lt;char&gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorStrin gStorage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; &gt;::new_lexer(class std::_String_iterator&lt;char ,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,class std::_String_iterator&lt;char ,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,struct boost::wave::util::file_p osition&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator &lt;char&gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorStringStorage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; const &amp;,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&lt;class boost::wave::cpplexer::l ex_token&lt;struct boost::wave::util::file_position&lt;class boost::wave::util::flex_string&lt;char,struct st d::char_traits&lt;char&gt;,class std::allocator&lt;char&gt;,class boost::wave::util::CowString&lt;class boost::wave ::util::AllocatorStringStorage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; &gt; &gt; * __cdecl boost::wa ve::cpplexer::lexertl::lexertl_input_interface&lt;class boost::wave::cpplexer::lex_token&lt;struct boost:: wave::util::file_position&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,cl ass std::allocator&lt;char&gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorString Storage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; &gt; &gt;::new_lexer&lt;class std::_String_iterator&lt;cha r,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; &gt;(class std::_String_iterator&lt;char,stru ct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,class std::_String_iterator&lt;char,stru ct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,struct boost::wave::util::file_positi on&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char &gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorStringStorage&lt;char,class std: :allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; const &amp;,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 &gt;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&gt; </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6588 Trac 1.4.3 Brian Budge <brian.budge@…> Thu, 08 Mar 2012 16:40:51 GMT <link>https://svn.boost.org/trac10/ticket/6588#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/6588#comment:1</guid> <description> <p> I get a similar linking error with gcc 4.6.1: </p> <p> list_includes.o: In function `boost::wave::cpplexer::lex_input_interface&lt;boost::wave::cpplexer::lex_token&lt;boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::<a class="missing wiki">CowString</a>&lt;boost::wave::util::AllocatorStringStorage&lt;char, std::allocator&lt;char&gt; &gt;, char*&gt; &gt; &gt; &gt; &gt;* boost::wave::cpplexer::lexertl::lexertl_input_interface&lt;boost::wave::cpplexer::lex_token&lt;boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::<a class="missing wiki">CowString</a>&lt;boost::wave::util::AllocatorStringStorage&lt;char, std::allocator&lt;char&gt; &gt;, char*&gt; &gt; &gt; &gt; &gt;::new_lexer&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;(<span class="underline">gnu_cxx::</span>normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; const&amp;, <span class="underline">gnu_cxx::</span>normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; const&amp;, boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::<a class="missing wiki">CowString</a>&lt;boost::wave::util::AllocatorStringStorage&lt;char, std::allocator&lt;char&gt; &gt;, char*&gt; &gt; &gt; const&amp;, boost::wave::language_support)': list_includes.cpp:(.text._ZN5boost4wave8cpplexer7lexertl23lexertl_input_interfaceINS1_9lex_tokenINS0_4util13file_positionINS5_11flex_stringIcSt11char_traitsIcESaIcENS5_9CowStringINS5_22AllocatorStringStorageIcSA_EEPcEEEEEEEEE9new_lexerIN9<span class="underline">gnu_cxx17</span>normal_iteratorISE_SsEEEEPNS1_19lex_input_interfaceISI_EERKT_ST_RKSH_NS0_16language_supportE[boost::wave::cpplexer::lex_input_interface&lt;boost::wave::cpplexer::lex_token&lt;boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::CowString&lt;boost::wave::util::AllocatorStringStorage&lt;char, std::allocator&lt;char&gt; &gt;, char*&gt; &gt; &gt; &gt; &gt;* boost::wave::cpplexer::lexertl::lexertl_input_interface&lt;boost::wave::cpplexer::lex_token&lt;boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::CowString&lt;boost::wave::util::AllocatorStringStorage&lt;char, std::allocator&lt;char&gt; &gt;, char*&gt; &gt; &gt; &gt; &gt;::new_lexer&lt;__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;(__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; const&amp;, __gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; const&amp;, boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::CowString&lt;boost::wave::util::AllocatorStringStorage&lt;char, std::allocator&lt;char&gt; &gt;, char*&gt; &gt; &gt; const&amp;, boost::wave::language_support)]+0x2a): undefined reference to `boost::wave::cpplexer::lexertl::new_lexer_gen&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::<a class="missing wiki">CowString</a>&lt;boost::wave::util::AllocatorStringStorage&lt;char, std::allocator&lt;char&gt; &gt;, char*&gt; &gt; &gt; &gt;::new_lexer(<span class="underline">gnu_cxx::</span>normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; const&amp;, <span class="underline">gnu_cxx::</span>normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; const&amp;, boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::<a class="missing wiki">CowString</a>&lt;boost::wave::util::AllocatorStringStorage&lt;char, std::allocator&lt;char&gt; &gt;, char*&gt; &gt; &gt; const&amp;, boost::wave::language_support)' collect2: ld returned 1 exit status </p> </description> <category>Ticket</category> </item> </channel> </rss>