locked
64-bit Boost Libraries

    Question

  • I have a an existing C++ DLL that uses Boost Libraria Version boost_1_35_0. Now I am converting this program into 64-bit so it startd generating errors like this. Can someone help me in resolving this problem? Do I need to download new 64-bit boost libraries? What is the procedure of getting 64-bit Boost libraries without getting into the mess of compiling those libraries?

     

     

    Error	41	error LNK2019: unresolved external symbol "private: class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > & __cdecl boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::do_assign(char const *,char const *,unsigned int)" (?do_assign@?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@boost@@AEAAAEAV12@PEBD0I@Z) referenced in function "public: class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > & __cdecl boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::assign(char const *,char const *,unsigned int)" (?assign@?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@boost@@QEAAAEAV12@PEBD0I@Z)	BrowserCaps.obj
    
    
    Error	42	error LNK2001: unresolved external symbol "private: class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > & __cdecl boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::do_assign(char const *,char const *,unsigned int)" (?do_assign@?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@boost@@AEAAAEAV12@PEBD0I@Z)	Config.obj
    
    
    Error	43	error LNK2019: unresolved external symbol "private: void __cdecl boost::re_detail::perl_matcher<char const *,class std::allocator<struct boost::sub_match<char const *> >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::construct_init(class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > const &,enum boost::regex_constants::_match_flags)" (?construct_init@?$perl_matcher@PEBDV?$allocator@U?$sub_match@PEBD@boost@@@std@@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@AEAAXAEBV?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@3@W4_match_flags@regex_constants@3@@Z) referenced in function "public: __cdecl boost::re_detail::perl_matcher<char const *,class std::allocator<struct boost::sub_match<char const *> >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::perl_matcher<char const *,class std::allocator<struct boost::sub_match<char const *> >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >(char const *,char const *,class boost::match_results<char const *,class std::allocator<struct boost::sub_match<char const *> > > &,class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > const &,enum boost::regex_constants::_match_flags,char const *)" (??0?$perl_matcher@PEBDV?$allocator@U?$sub_match@PEBD@boost@@@std@@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@QEAA@PEBD0AEAV?$match_results@PEBDV?$allocator@U?$sub_match@PEBD@boost@@@std@@@2@AEBV?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@2@W4_match_flags@regex_constants@2@0@Z)	BrowserCaps.obj
    
    
    Error	44	error LNK2001: unresolved external symbol "private: void __cdecl boost::re_detail::perl_matcher<char const *,class std::allocator<struct boost::sub_match<char const *> >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::construct_init(class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > const &,enum boost::regex_constants::_match_flags)" (?construct_init@?$perl_matcher@PEBDV?$allocator@U?$sub_match@PEBD@boost@@@std@@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@AEAAXAEBV?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@3@W4_match_flags@regex_constants@3@@Z)	RequestHandler.obj
    
    
    Error	45	error LNK2019: unresolved external symbol "public: bool __cdecl boost::re_detail::perl_matcher<char const *,class std::allocator<struct boost::sub_match<char const *> >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::find(void)" (?find@?$perl_matcher@PEBDV?$allocator@U?$sub_match@PEBD@boost@@@std@@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@QEAA_NXZ) referenced in function "bool __cdecl boost::regex_search<char const *,char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >(char const *,char const *,class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > const &,enum boost::regex_constants::_match_flags)" (??$regex_search@PEBDDU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@boost@@YA_NPEBD0AEBV?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@0@W4_match_flags@regex_constants@0@@Z)	BrowserCaps.obj
    
    
    Error	46	error LNK2019: unresolved external symbol "public: bool __cdecl boost::re_detail::perl_matcher<char const *,class std::allocator<struct boost::sub_match<char const *> >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::match(void)" (?match@?$perl_matcher@PEBDV?$allocator@U?$sub_match@PEBD@boost@@@std@@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@QEAA_NXZ) referenced in function "bool __cdecl boost::regex_match<char const *,class std::allocator<struct boost::sub_match<char const *> >,char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >(char const *,char const *,class boost::match_results<char const *,class std::allocator<struct boost::sub_match<char const *> > > &,class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > const &,enum boost::regex_constants::_match_flags)" (??$regex_match@PEBDV?$allocator@U?$sub_match@PEBD@boost@@@std@@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@boost@@YA_NPEBD0AEAV?$match_results@PEBDV?$allocator@U?$sub_match@PEBD@boost@@@std@@@0@AEBV?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@0@W4_match_flags@regex_constants@0@@Z)	RequestHandler.obj
    
    

    Adeel
    Friday, May 20, 2011 9:33 AM

Answers

  • You can try to remove --build-type=complete and try again.

    Thanks and Regards Selvam http://www15.brinkster.com/selvamselvam/
    • Marked as answer by maverick786us Monday, July 11, 2011 5:10 AM
    Tuesday, June 21, 2011 2:18 PM

All replies

  • You can check the following link for 64bit support

     

    http://www.boost.org/boost-build2/doc/html/bbv2/reference/tools.html

     

    From the above link,

    To use 64-bit compilation you should:

    1. Configure you compiler as usual. If you provide a path to the compiler explicitly, provide the path to the 32-bit compiler. If you try to specify the path to any of 64-bit compilers, configuration will not work.

    2. When compiling, use address-model=64, to generate AMD64 code.

    3. To generate IA64 code, use architecture=ia64

     

    Have you linked with corresponding library file for unresolved symbol? You can download 64bit lib from http://boost.teeks99.com/

     

     


    Thanks and Regards Selvam http://www15.brinkster.com/selvamselvam/
    • Marked as answer by maverick786us Friday, May 20, 2011 11:00 AM
    • Edited by Selvam Friday, May 20, 2011 11:01 AM
    • Unmarked as answer by maverick786us Tuesday, June 21, 2011 12:10 PM
    Friday, May 20, 2011 10:58 AM
  • Thanks, I downloade the version Boost_1_42 and then compiled using this command

    bjam toolset=msvc-8.0 variant=debug threading=multi link=shared define=_BIND_TO_CURRENT_VCLIBS_VERSION address-model=64


    It compiled successfully, although it generated a warning stating "No Python Installation". So in the orignial application, I changed the settings and included the path of these new boost libararies in include and lib option. But still the same error was generated :(

    Then I used this command

    bjam --toolset=msvc-8.0 address-model=64 --build-type=complete stage 

    Its still compiling, will let you know how it goes

     


    Adeel
    Tuesday, June 21, 2011 11:03 AM
  • Too bad. It took more than an hour to compile using this command

    bjam --toolset=msvc-8.0 address-model=64 --build-type=complete stage


    and still the result is same :(


    Adeel
    Tuesday, June 21, 2011 12:07 PM
  • You can try to remove --build-type=complete and try again.

    Thanks and Regards Selvam http://www15.brinkster.com/selvamselvam/
    • Marked as answer by maverick786us Monday, July 11, 2011 5:10 AM
    Tuesday, June 21, 2011 2:18 PM
  • You can try to remove --build-type=complete and try again.

    Thanks and Regards Selvam http://www15.brinkster.com/selvamselvam/


    What difference will it make apart from reducing the compile time. I think this library file "libboost_regex-vc80-mt-1_46_1.lib" is responsible for this error.

    Any suggestion?


    Adeel
    Wednesday, June 22, 2011 5:16 AM