Boost logo

Boost Users :

Subject: [Boost-users] Problem using Boost regex
From: John Emmas (johne53_at_[hidden])
Date: 2009-12-07 06:22:02


If my previous post makes it to the mailing list, please ignore it
(I figured out some of the original confusion). Here's the problem
I'm left with:-

A couple of days ago I installed libboost (v1.40) using the Windows
setup.exe file. To get myself started I decided to build the regex example
that I found here:-

http://www.cs.brown.edu/~jwicks/boost/libs/regex/doc/introduction.html

My installation contains DLLs called:-

boost_regex-vc80-mt-1_40.dll
   and
boost_regex-vc80-mt-gd-1_40.dll

along with their associated link libs - and here's the example, as
I built it:-

#include <string>
#include <boost/regex.hpp>

using namespace std;
using namespace boost;

bool validate_card_format(const string s)
{
      static const boost::regex e("(\\d{4}[- ]){3}\\d{4}");
      return regex_match(s, e);
}

// and further on, I call the above function....

bool bb = validate_card_format("1111 2222 3333 4444");

If I link my app to boost_regex-vc80-mt-gd-1_40.lib (or if I don't link it
to boost at all) the app won't run. In either case if I try to launch my
app I see a dialog box telling me that the configuration is incorrect
(possibly a problem with manifests?)

OTOH If I link my app to boost_regex-vc80-mt-1_40.lib, I get a crash at the
above call - i.e. at 'bb = validate_card_format("1111 2222 3333 4444");'

The crash is caused by an unhandled exception in 'basic_regex::assign'. The
exception occurs at the call to 'do_assign()' and I get this message:-

boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::runtime_error>
> at memory location 0x0012f4e4.

I'm guessing that I should have configured something between installing
boost and starting to use it. Have I missed a step out somewhere?

Thanks,

John


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