Boost.Filesystem with MSVC8 & STLPort linker errors
Hi, I have an application using Boost.Filesystem, Boost.Thread and others, that I am building on Windows XP using MSVC8, STLPort and Boost 1.39.0. I have built Boost using Boost Jam 3.1.17 and STLPort. Using the MSVC native STL I get no errors and everything runs well, but with the STL version, I have four linker errors; all from Boost.Filesystem. Has anyone come across this problem before and found a solution, or give me a clue what might be wrong? Many thanks -- Craig 1>fsdatasource.obj : error LNK2019: unresolved external symbol "class boost::filesystem::file_status __cdecl boost::filesystem::detail::status_api(class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > const &,class boost::system::error_code &)" (?status_api@detail@filesystem@boost@@YA?AVfile_status@23@ABV?$basic_string@ DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@AAVerror_code@syst em@3@@Z) referenced in function "bool __cdecl boost::filesystem::is_directory<class boost::filesystem::basic_path<class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> >,struct boost::filesystem::path_traits> >(class boost::filesystem::basic_path<class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> >,struct boost::filesystem::path_traits> const &)" (??$is_directory@V?$basic_path@V?$basic_string@DV?$char_traits@D@stlpd_std@@ V?$allocator@D@2@@stlpd_std@@Upath_traits@filesystem@boost@@@filesystem@boos t@@@filesystem@boost@@YA_NABV?$basic_path@V?$basic_string@DV?$char_traits@D@ stlpd_std@@V?$allocator@D@2@@stlpd_std@@Upath_traits@filesystem@boost@@@01@@ Z) 1>fsdatasource.obj : error LNK2019: unresolved external symbol "class boost::system::error_code __cdecl boost::filesystem::detail::dir_itr_increment(void * &,class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > &,class boost::filesystem::file_status &,class boost::filesystem::file_status &)" (?dir_itr_increment@detail@filesystem@boost@@YA?AVerror_code@system@3@AAPAXA AV?$basic_string@DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@A AVfile_status@23@2@Z) referenced in function "private: void __thiscall boost::filesystem::basic_directory_iterator<class boost::filesystem::basic_path<class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> >,struct boost::filesystem::path_traits> >::increment(void)" (?increment@?$basic_directory_iterator@V?$basic_path@V?$basic_string@DV?$cha r_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@Upath_traits@filesystem@b oost@@@filesystem@boost@@@filesystem@boost@@AAEXXZ) 1>fsdatasource.obj : error LNK2019: unresolved external symbol "class boost::system::error_code __cdecl boost::filesystem::detail::dir_itr_first(void * &,class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > const &,class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > &,class boost::filesystem::file_status &,class boost::filesystem::file_status &)" (?dir_itr_first@detail@filesystem@boost@@YA?AVerror_code@system@3@AAPAXABV?$ basic_string@DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@AAV67 @AAVfile_status@23@3@Z) referenced in function "private: class boost::system::error_code __thiscall boost::filesystem::basic_directory_iterator<class boost::filesystem::basic_path<class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> >,struct boost::filesystem::path_traits> >::m_init(class boost::filesystem::basic_path<class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> >,struct boost::filesystem::path_traits> const &)" (?m_init@?$basic_directory_iterator@V?$basic_path@V?$basic_string@DV?$char_t raits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@Upath_traits@filesystem@boos t@@@filesystem@boost@@@filesystem@boost@@AAE?AVerror_code@system@3@ABV?$basi c_path@V?$basic_string@DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_ std@@Upath_traits@filesystem@boost@@@23@@Z) 1>fsdatasource.obj : error LNK2019: unresolved external symbol "class boost::system::error_code __cdecl boost::filesystem::detail::remove_api(class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > const &)" (?remove_api@detail@filesystem@boost@@YA?AVerror_code@system@3@ABV?$basic_st ring@DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@@Z) referenced in function "bool __cdecl boost::filesystem::detail::remove_aux<class boost::filesystem::basic_path<class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> >,struct boost::filesystem::path_traits> >(class boost::filesystem::basic_path<class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> >,struct boost::filesystem::path_traits> const &,class boost::filesystem::file_status)" (??$remove_aux@V?$basic_path@V?$basic_string@DV?$char_traits@D@stlpd_std@@V? $allocator@D@2@@stlpd_std@@Upath_traits@filesystem@boost@@@filesystem@boost@ @@detail@filesystem@boost@@YA_NABV?$basic_path@V?$basic_string@DV?$char_trai ts@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@Upath_traits@filesystem@boost@@ @12@Vfile_status@12@@Z)
Craig Henderson wrote:
Hi,
I have an application using Boost.Filesystem, Boost.Thread and others, that I am building on Windows XP using MSVC8, STLPort and Boost 1.39.0. I have built Boost using Boost Jam 3.1.17 and STLPort.
How exactly? What commands did you type, and what configuration files are you using? Did you use stdlib=stlport ?
Using the MSVC native STL I get no errors and everything runs well, but with the STL version, I have four linker errors; all from Boost.Filesystem.
Has anyone come across this problem before and found a solution, or give me a clue what might be wrong?
Many thanks -- Craig
1>fsdatasource.obj : error LNK2019: unresolved external symbol "class boost::filesystem::file_status __cdecl boost::filesystem::detail::status_api(class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > const &,class boost::system::error_code &)" (?status_api@detail@filesystem@boost@@YA?AVfile_status@23@ABV?$basic_string@ DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@AAVerror_code@syst em@3@@Z) referenced in function
The general procedure for debugging unresolved symbols can be found at: http://vladimir_prus.blogspot.com/2009/06/linking-101.html My guess in this case is that Boost was not actually built with STLPort, which you can probably check by looking at the symbol table of the library with whatever tool is suitable (dumbpin?) - Volodya
participants (2)
-
Craig Henderson
-
Vladimir Prus