Hi!

I'm having problems with a program, built using VC8 and an SDK generated
with PB5. The problem is that if I build the program normally, it doesn't
run because it fails to find some symbols that from msvcrt80d.

Now, if I add this DLL [1] to the deployed DLL manually (is there a way to
automatically upload all required DLLs, btw?) and run the program, it fails
before entering main with a stack corruption (I guess the DLL from VC8 is
simply not the right one).

If I then go and tell the linker /nodefaultlib:msvcrtd.lib I'm lackin the
mentioned __CxxFrameHandler3.

Any ideas what I'm doing wrong? Any idea where this dependency comes from in
the first place?

Uli

[1] The DLL is not part of the SDK but only in the VC8 installation. Is
there perhaps something I should have configured in the SDK/PB-project to
get a proper version included in the image?

Re: msvcrt80d.dll and __CxxFrameHandler3 by Ulrich

Ulrich
Wed May 17 07:41:16 CDT 2006

Short update on the matter, I can reproduce this with a vanilla VC8
installation, too:

1. Create a embedded project. I chose PocketPC 2003 as target platform and
a "Win 32 Smart Device Project" as initial setup.

2. Add following code to the sourcefile:

struct a_struct
{};

void somefn()
{
throw a_struct();
}

inside WinMain then, add this:

try {
somefn();
} catch(a_struct const&) {
}

3. Go to the properties and change the runtime library from "Multithreaded
Debug" to "Multithreaded Debug DLL".

The program will compile and link fine now. However, it will not run on the
included emulator for PocketPC 2003, it will abort with error 0x8007007e. I
guess the trailing 0x7e (126) is the meaningful part thereof and it signals
a missing DLL during program startup.

Uli