I have the same issue with a more simple construction that I have always used, but is also not
behaving as expected:
HINSTANCE g_hInstance = NULL; // global
BOOL APIENTRY DllMain( HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
g_hInst = (HINSTANCE) hModule; // when debugging, hModule is NON-NULL, but g_hInst is
0x00000000 (unused???)
break;
}
return TRUE;
}
Perhaps g_hInst is fine, but debugger can not evaluate it?
Lisa
"Lisa Pearlson" <no@spam.plz> wrote in message
news:0123B124-C60D-458B-8743-A254084480ED@microsoft.com...
Hi guys,
I'm really confused about something here.
I have a DLL that exports a function "Test()", and in this function I want to use a global
variable:
This is my code:
#include <string>
typedef struct _MYSTRUCT {
wstring t;
int i;
_MYSTRUCT() {
t = TEXT("Some Text");
i = 10;
}
} MYSTRUCT, *LPMYSTRUCT;
MYSTRUCT g_mystruct; // global variable;
// exported function;
void Test()
{
ASSERT( g_mystruct.i == 10 ); // fails
MYSTRUCT locstruct;
ASSERT( g_mystruct == 10 ); // succeeds
}
The constructor DOES get called when program runs, but as soon as it enters the function, the
global variable is uninitialized.
I don't understand above behaviour.
The DLL is Loaded and exported function is called from within the same thread.
Can someone enlighten me?
Lisa