I've created a managed wrapper class for a c++ .dll i want to call from
a c-sharp project. It works fine except that any static strings that
are created within any of the classes of my c++ .dll aren't getting
initialized...i.e. they are always empty! The code looks something
like this (abridged):
//WrapperClass.cpp
public __gc class WrapperClass
{
void myMethod()
{
UnmanagedClass cl();
string str = cl.getString();
}
}
//UnmanagedClass.h
class UnmanagedClass
{
public:
static string str;
}
//UnmanagedClass.cpp
public class UnmanagedClass()
{
string UnmanagedClass::str("hello world");
string getString()
{
return str;
}
}
Basically the static member "str" is always empty...i.e. it never gets
assigned the "hello world" value. This works fine when managed
extensions aren't involved. Does anyone know what's going on.
Carl Daniel [VC++ MVP] - 17 Mar 2006 05:10 GMT
> I've created a managed wrapper class for a c++ .dll i want to call
> from a c-sharp project. It works fine except that any static strings
[quoted text clipped - 33 lines]
> assigned the "hello world" value. This works fine when managed
> extensions aren't involved. Does anyone know what's going on.
You need to call __crt_dll_initialize() yourself. See KB article 814472 at
http://support.microsoft.com/?id=814472.
-cd
MTL - 17 Mar 2006 20:15 GMT
Thanks alot, that did the trickl