Boost logo

Boost Users :

Subject: [Boost-users] Methods prefixed by cdecl?
From: Ven Tadipatri (ven.tadipatri_at_[hidden])
Date: 2010-10-19 16:59:12


  Hi,
    I'm using Windows 7 (64 bit) and I'm trying to compile and link my
code against the regex libraries. It compiles fine, but at link time, it
can't find any of the methods in the regex library. But the methods it's
looking for are prefixed by "__cdecl". I've tried compiling my code with
the /Gd and /Gz options, and neither seemed to work.

Here's what the error looks like:
[ERROR] ResourceURI.obj : 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_at_DU?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@boost@@AEAAAEAV12_at_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_at_DU?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@boost@@QEAAAEAV12_at_PEBD0I@Z)
[ERROR] ResourceService.obj : 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_at_DU?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@boost@@AEAAAEAV12_at_PEBD0I@Z)
[ERROR] AtomicParsingExpression.obj : 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_at_DU?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@boost@@AEAAAEAV12_at_PEBD0I@Z)
[ERROR] AbstractLoopingVariable.obj : 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_at_DU?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@boost@@AEAAAEAV12_at_PEBD0I@Z)

When I do a dumpbin /symbols on the regex library I built, it does
contain the methods above (as far as I can tell)
26F 00000000 SECT92 notype () External |
?assign@?$basic_regex_at_DU?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@boost@@QAEAAV1
2_at_PBD0I@Z (public: class boost::basic_regex<char,struct
boost::regex_traits<char,class boost::w32_regex_traits<char> > > &
__thiscall boost: :basic_regex<char,struct
boost::regex_traits<char,class boost::w32_regex_traits<char> >
>::assign(char const *,char const *,unsigned int))
CB4 00000000 SECT40D notype () External |
?do_assign@?$basic_regex_at_DU?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@boost@@AAEAAV12_at_PBD0I@Z
(private: class boost::basic_regex<char,struct
boost::regex_traits<char,class boost::w32_regex_traits<char> > > &
__thiscall boost::basic_regex<char,struct boost::regex_traits<char,class
boost::w32_regex_traits<char> > >::do_assign(char const *,char const
*,unsigned int))

Any ideas on how to get my programs to link against the methods in the
regex library?

Thanks,
Ven


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net