Boost logo

Boost Users :

From: Manish Mangal (Manish.Mangal_at_[hidden])
Date: 2007-01-25 16:47:55


Hi

I have built the StlPort 5.1.0 shared dlls and boost 1_33_1 Shared dlls
successfully.

The Platform is MSVC8.

I created a sample projeth with just on file with code:

#include <boost/regex.hpp>

 

bool testregex( const char* StringToMatch )

{

        return( boost::regex_match( StringToMatch,
boost::regex("[A-Z]+") ));

}

 

int main (int argc, char *argv[])

            {

                  bool trial = testregex( "hello how r u ?");

                  return 1;

            }

 

 

Compilation succeeds but I get two Linker errors (BOOST_DYN_LINK is
defined)

 

Main.obj : error LNK2001: unresolved external symbol "public: bool
__thiscall boost::re_detail::perl_matcher<char const *,class
stlp_std::allocator<struct boost::sub_match<char const *> >,struct
boost::regex_traits<char,class boost::w32_regex_traits<char> >
>::match(void)"
(?match@?$perl_matcher_at_PBDV?$allocator_at_U?$sub_match_at_PBD@boost@@@stlp_std
@@U?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@re_detail_at_boost
@@QAE_NXZ)

1>Main.obj : error LNK2001: unresolved external symbol "public:
__thiscall boost::re_detail::perl_matcher<char const *,class
stlp_std::allocator<struct boost::sub_match<char const *> >,struct
boost::regex_traits<char,class boost::w32_regex_traits<char> >
>::perl_matcher<char const *,class stlp_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 stlp_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_at_PBDV?$allocator_at_U?$sub_match_at_PBD@boost@@@stlp_std@@U?
$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@boost@@@re_detail_at_boost@@QA
E_at_PBD0AAV?$match_results_at_PBDV?$allocator_at_U?$sub_match_at_PBD@boost@@@stlp_s
td@@@2_at_ABV?$basic_regex_at_DU?$regex_traits_at_DV?$w32_regex_traits_at_D@boost@@@
boost@@@2_at_W4_match_flags_at_regex_constants_at_2@0_at_Z)

 

 

So it cannot find the constructor for perl_matcher and the declaration
for regex_match.

 

I found a similar post on Boost :
http://www.nabble.com/-regex-Using-regex-in-x64-exe-with-VC-8.0-t2088061
.html#a5755051

 

The suggested solutions on this post are:

1) check for intermixing of x86 and x64 : I am on 32 bit
platform.. so intermixing does not apply

2) add regex source code and compile ( using BOOST_REGEX_NO_LIB) :
I get the errors for stdext namespace

 

1>C:\boost_1_33_1\boost/regex/v4/regex_workaround.hpp(145) : error
C2653: 'stdext' : is not a class or namespace name

1> C:\boost_1_33_1\boost/regex/v4/regex_format.hpp(562) : see
reference to function template instantiation 'OutputIterator
boost::re_detail::copy<const
charT*,OutputIterator>(InputIterator,InputIterator,OutputIterator)'
being compiled

1> with

1> [

1>
OutputIterator=boost::re_detail::string_out_iterator<stlp_std::basic_str
ing<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>
>,

1> charT=wchar_t,

1> InputIterator=const wchar_t *

1> ]

1> C:\boost_1_33_1\boost/regex/v4/match_results.hpp(160) : see
reference to function template instantiation 'OutputIterator
boost::re_detail::regex_format_imp<boost::re_detail::string_out_iterator
<S>,const
wchar_t*,stlp_std::allocator<_Tp>,_CharT,boost::re_detail::trivial_forma
t_traits<charT>>(OutputIterator,const boost::match_results<BidiIterator>
&,const charT *,const charT
*,boost::regex_constants::match_flag_type,const traits &)' being
compiled

1> with

1> [

1>
OutputIterator=boost::re_detail::string_out_iterator<stlp_std::basic_str
ing<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>
>,

1>
S=stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std
::allocator<wchar_t>>,

1> _Tp=boost::sub_match<const wchar_t *>,

1> _CharT=wchar_t,

1> charT=wchar_t,

1> BidiIterator=const wchar_t *,

1> traits=boost::re_detail::trivial_format_traits<wchar_t>

1> ]

1> C:\boost_1_33_1\boost/regex/v4/match_results.hpp(156) : while
compiling class template member function
'stlp_std::basic_string<_CharT,_Traits,_Alloc>
boost::match_results<BidiIterator>::format(const
stlp_std::basic_string<_CharT,_Traits,_Alloc>
&,boost::regex_constants::match_flag_type) const'

1> with

1> [

1> _CharT=wchar_t,

1> _Traits=stlp_std::char_traits<wchar_t>,

1> _Alloc=stlp_std::allocator<wchar_t>,

1> BidiIterator=const wchar_t *

1> ]

1> C:\boost_1_33_1\boost/regex/v4/instances.hpp(86) : see
reference to class template instantiation
'boost::match_results<BidiIterator>' being compiled

1> with

1> [

1> BidiIterator=const wchar_t *

1> ]

1>C:\boost_1_33_1\boost/regex/v4/regex_workaround.hpp(145) : error
C3861: 'unchecked_copy': identifier not found

 

 

Can anyone suggest a solution??

 

Thanks in advance

Manish Mangal

 Software Engineer

atlas(r) search
Partner for Results

206-816-8349 // phone

Manish.Mangal_at_[hidden] <mailto:t-Matt.Koch_at_[hidden]>
// email
www.AtlasSolutions.com
<outbind://116-000000001368D4B5F8F6D0488191444C76FD7C9507008921F4CB773B0
545AAED425DEF553BC300003A3500100000DB0C51F64BED3447AA6EC585072C4EC300000
1E3B7A70000/jenniferh/Local%20Settings/Temporary%20Internet%20Files/OLK3
/www.AtlasSolutions.com> // web

 



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