Static strings not initialized in Managed C++

M

MTL

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.
 
C

Carl Daniel [VC++ MVP]

MTL said:
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.

You need to call __crt_dll_initialize() yourself. See KB article 814472 at
http://support.microsoft.com/?id=814472.

-cd
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top