[had no luck on the Visual Studio Express forum...]
Has the compiler for this new release version of VC++express changed since the beta
On a different forum, the following posts have been made:
" I always use UPX to compress my binaries, and it seems that compressing the output of the new compiler produces something that doesn't run."
"Is there any managed code in it UPX butchers that as I recall as it is not actual valid machine code."
"Yes, that must be it.. though I can't find any options to get rid of the damn stuff. I've got CLR support turned off in the settings, and it's exactly the same project that used to work fine in the previous version. I've been trying various linker options but getting nowhere. Same thing happens with the jucedemo project.
Not being able to compress it isn't a showstopper, but the exes also don't work under win2000 or 98 now, which makes it useless to me. Hope this isn't deliberate MS poilicy now."
This is obviously of some concern. Is anyone able to determine what it might be that has changed since the beta version that is causing this

Latest compiler creating XP-only compatible .exe files
Quinn Dexter
Thanks,
Ayman Shoukry
VC++ Team
Daggs
i'll try to get in touch with the creators of upx and see if they can see what's going on.
Pioter
does it not appear odd to you that they're not accepted by the upx tool plus, have you managed to successfully run a 2005 build on a win2k or win98 pc i have no other systems on which to test here :(
undead142
however, don't be so quick to assume that noone can help without them. is anyone familiar with the UPX tool So far, I am absolutely unable to compress any .exe generated by VC++express 2005 - it says there is unexpected data in the PE header.
I've tried with some of my older apps, compiled with the beta version, and i get the same problem. This is the problem that the quoted coder is also having with the latest version, the difference being that they've had older versions of visual C++ on their system in the past, which may have been used to build the 'working' ones. We are using the 'Juce' libraries, but consider that irrelevant for now.
I have made the most absolutely basic .exe you can imagine, with just a main function that does something inconsequential. If I compile it with VC++express, UPX tells me that it can't compress it due to unexpected data in the PE header. This is as basic as it gets. For now, just consider that the problem may not be between the beta and release versions, but between non-2005 versions and the 2005 version. Perhaps even forget that.
Please, could you try to use UPX on any binary exe built with VC++2005. Does it work for you I do not have access to older versions to try out, so can offer no other clues or examples, but SURELY it is possible for someone involved to deduce what may be causing such a problem
As far as the 'errors' on loading the compiled apps on the other os's, (e.g. win2k) they simply didn't load. a bit of hourglass and no application. you may say that this is something to do with the juce library, and perhaps there's a chance you'd be correct, BUT - this is only because of a change in the 2005 compiler :shrug:
but for even the most rudimentary of exes to be rejected by UPX
Brandon Bray
I hate to ask many questions but I really want to help if I can :-) Please don't hesitate to let me know in case myself or others can help.
Thanks,
Ayman Shoukry
VC++ Team
mehdi62b
Thanks,
Ayman Shoukry
VC++ Team
Neotech
The only thing that comes across my mind is having manifests embeded into the executables. Could you try a simple application compiled with /MT (Linked statically to the CRT) and see if UPX still complains. That is to say, don't generate any manifests for your application.
That is also something applicable only for Win XP and later OSs since fusion and SxS in general is not supported in older OSs (including win2k).
Let me know if this works for you. If this doesn't then I will try downloading the tool to reproduce the issue myself.
Thanks,
Ayman Shoukry
VC++ Team
kes
futureadmin
I was able to reproduce the issue the error. I looked at the VC2005 header and everything seems as expected (used the dumpbin tool). The executable runs as expected just by running it.
upx test.exe
Ultimate Packer for eXecutables
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
UPX 1.25w Markus F.X.J. Oberhumer & Laszlo Molnar Jun 29th 2004
File size Ratio Format Name
-------------------- ------ ----------- -----------
upx: test.exe: CantPackException: unexpected value in PE header (try --force)
Packed 1 file: 0 ok, 1 error.
It might be a tool issue. Have you tried contacting the owners of the tool They for sure can tell what might be happening.
Thanks,
Ayman Shoukry
VC++ Team
Praveen Raj
Thanks,
Ayman Shoukry
VC++ Team
Tom Kaminski
http://upx.sourceforge.net/
Jacob Christ
My experiences were that I'd been using the last beta version for a while, and had several projects that I compiled with it. These were all compressed with UPX and worked happily on all the machines I tried it on. I upgraded to the VCExpress release, recompiled the same projects. Definitely didn't change any project settings at all, and hadn't installed anything else on my machine.
It all seemed to be fine, but my release builds no longer worked - UPX was compressing them without the errors that haydxn saw, but the resulting exe just produced a runtime error ("floating point not loaded" or something).
So I turned off the compression and the exes seemed to be fine (on my XP machine) but no longer run on win2k or win98. I've not witnessed it failing to run myself, but the reports are that there are no errors, but that the exe just doesn't start - nothing appears in the process manager.
In case it's any help, exactly the same thing happens with exes and dlls (being used as an audio plugin).
I can only guess that this must be because there's some managed code being built into it now that wasn't there before Maybe if the .NET runtime was installed on the win2k machines it'd run ok (is that perhaps why it works for you, Ayman ). But that's not a workable solution for my customers. I've been through the compiler and linker settings with a fine tooth comb but nothing seems to make any difference.
Would love to get to the bottom of this - hopefully there's just a setting I can flip that'll sort it out. If not, I guess I'll be going back to VC6 for my release builds...
Cheers
Jules
Mike Thorpton
however,
trying the UPX exe-compression tool reports:
Can'tPackException: unexpected value in PE header
This does not happen with .exes compiled from the same project with the beta version, which means that something has changed. what could that possibly be surely someone may know what may have changed that causes such a change in the PE header I'll see if i can get hold of a 'before' and 'after' pair of .exes...
Sameer Bhangar - MSFT
As I mentioned before I am not familiar with the tool. So it would be very much related to the tool and hence the tool owners would be able to have more details if it is a tool's issue or a VC2005 one.
Yes, I have been running VC2005 application everyday on win2k machines as well as Win98. What kind of errors do you get when you run on any of such OSs
Thanks,
Ayman Shoukry
VC++ Team