I realize it is not
officially supported, but has anyone had success using boost libraries in a
mixed CLR assembly? I am using visual studio 2005. I have been trying to
accomplish this in an applicatation that has a Windows Forms front end, whose
enire back end is build of libraries written in standard C++, making extensive
use of boost, especially smart pointers and threads.
The specific problem
I am having involved initializing static variables. For instance, I have a
global variable:
boost::mutex
osmutex;
The program compiles and links
fine, but during static initialization, I receive an error indicating
_CrtIsValidHeapPointer(pUserData) is invalid. Looking at the stack unwind, the
calling code is the "dynamic initializer for 'osmutex'". My suspicion is
that the boost library is linking to a different run time library than my mixed
code, and that the pointer being rejected is happening as a result of it coming
from a different heap.
I would like
try to check this hypothesis by building boost forcing it to link to the correct
C++ runtime library used by mixed assemblies (msvcmrtd.dll), but I am not
familar enough with the boost build system to do this.