I have a Visual Studio 2008 C++03 application using Boost 1.47.0 running in Windows XP SP3.
The call boost::filesystem::create_directories( L\"c:\\\\foo\\\\bar
This seems to be a known bug in Microsoft's implementation of std::locale
when running a DEBUG build. It was reported June 2012.
The message you get regarding memory address CDCDCDCE implies accessing deleted memory, as this bug describes.
There is no solution currently described in Microsoft's site, but I would suggest trying a different facet by changing L"c:\\foo\\bar"
to "c:\\foo\\bar"
.
This problem smells like a mismatch in _SECURE_SCL
(or maybe the somewhat related _HAS_ITERATOR_DEBUGGING
- but I doubt the latter, since the call stack indicates a non-debug build). See https://stackoverflow.com/a/6104239/12711 for some info and make sure _SECURE_SCL
is defined the same way in the builds for test.exe
and the boost filesystem library linked in.
AFAIK, boost will use the VC default (which is _SECURE_SCL=1
even in release builds for VS2008), so if you're setting _SECURE_SCL=0
that may be the problem.