From: Alex Blekhman on
"Vincent Fatica" wrote:
> Yes, see my other recent post. I let VC8 convert a VC7 project.
> That introduces the problem. But I can't find what the
> conversion changed.

I know that upgrade from the previous project type adds property
sheet from %VCINSTALLDIR%\VCProjectDefaults directory. One of
UpgradeFromVC*.vsprops is added to the converted project. However,
all that these propery sheets do is add "_VC80_UPGRADE=0x0710"
define. Somehow this define affects manifest mechanics, which, in
its turn, affects resulting PE image.

If you have moderate project size, then probably the easiest
solution is to create new project from scratch and to add exiting
files to it.

Alex


From: Vincent Fatica on
On Fri, 22 Aug 2008 00:03:46 +0300, "Alex Blekhman" <tkfx.REMOVE(a)yahoo.com>
wrote:

>I know that upgrade from the previous project type adds property
>sheet from %VCINSTALLDIR%\VCProjectDefaults directory. One of
>UpgradeFromVC*.vsprops is added to the converted project. However,
>all that these propery sheets do is add "_VC80_UPGRADE=0x0710"
>define. Somehow this define affects manifest mechanics, which, in
>its turn, affects resulting PE image.
>
>If you have moderate project size, then probably the easiest
>solution is to create new project from scratch and to add exiting
>files to it.

When I do that, it builds OK (no warnings or .CRT section) but it bombs when the
host app loads it:

R3604: An application has made an attempt to load the C runtime library
incorrectly.
--
- Vince
From: Alex Blekhman on
"Vincent Fatica" wrote:
> When I do that, it builds OK (no warnings or .CRT section) but
> it bombs when the host app loads it:
>
> R3604: An application has made an attempt to load the C runtime
> library incorrectly.

This is the clear sign that CRT crept in somewhere in your DLL.
Check your own and 3rd party code for "#pragma comment(lib, ...)"
directives. Also, you can open the DLL with Dependency Walker to
figure out what function is required from CRT.

Alex


From: Vincent Fatica on
On Fri, 22 Aug 2008 09:35:23 +0300, "Alex Blekhman" <tkfx.REMOVE(a)yahoo.com>
wrote:

>"Vincent Fatica" wrote:
>> When I do that, it builds OK (no warnings or .CRT section) but
>> it bombs when the host app loads it:
>>
>> R3604: An application has made an attempt to load the C runtime
>> library incorrectly.
>
>This is the clear sign that CRT crept in somewhere in your DLL.
>Check your own and 3rd party code for "#pragma comment(lib, ...)"
>directives. Also, you can open the DLL with Dependency Walker to
>figure out what function is required from CRT.

My DLL (together with several others) is a "plugin", not linked to the host app,
but loaded after startup. It doesn't show up in depends. Can I do anything
about that?
--
- Vince
From: Alex Blekhman on
"Vincent Fatica" wrote:
> My DLL (together with several others) is a "plugin", not linked
> to the host app, but loaded after startup. It doesn't show up
> in depends. Can I do anything about that?

Silly question, but anyway. Do you have any manifests embedded in
your DLL? Besides that I'm currently out of ideas.

Alex