Hi John, I have some new information this morning. I got up early and
created a simple console app using the App Wizard (Visual Studio 8 Express
Edition). Into the main source file (test_proj.cpp) I typed this code:-
#include "stdafx.h"
#include
#include
#include <string>
#include
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);
}
int _tmain(int argc, _TCHAR* argv[])
{
bool bb = validate_card_format("1111 2222 3333 4444");
if (bb)
puts("Card format is valid - press any key to exit");
else
puts("Card format is invalid - press any key to exit");
getch();
return 0;
}
That's the entire code, in case you want to reproduce the problem. This
also gave me the same problem as yesterday (i.e. the Release build runs
fine, but not the Debug build). After a few experiments I found that it
comes down to the following project setting:-
Properties->C/C++->Code Generation->Runtime Library
If the Debug version is set to "Multi-threaded Debug", boost links to
libboost-regex-vc80-mt-sgd-1_40.lib and the app runs fine. OTOH if I leave
that setting at its default value ("Multi-threaded Debug DLL") boost links
to libboost-regex-vc80-mt-gd-1_40.lib and the app won't run.
Armed with this information I went back to yesterday's project and tried the
same change. Unfortunately, that's a much more complex project and it won't
link in Multi-threaded Debug mode (I get lots of errors about duplicated
symbols). However, I hope that might help you to make sense of the problem.
John