Jump to content

  • Log In with Google      Sign In   
  • Create Account


MinGW *.exe not a valid win32 application

  • You cannot reply to this topic
16 replies to this topic

#1 Glass_Knife   Moderators   -  Reputation: 4083

Like
0Likes
Like

Posted 03 August 2014 - 11:46 AM

Been banging my head on the wall.  

 

Windows 7

Eclipse Helios CDT

MinGW toolchain.

 

Simple hello world compiled gives this error, and I have not idea.  Googled for two hours and searched all property dialogs to find nothing.

 

GAHHHH!!!!  Ironically I just read this article the other day and thought "Well that's not true."  http://www.drdobbs.com/tools/just-let-me-code/240168735

 

Anyways, any help is appreciated.

 

 


I think, therefore I am. I think? - "George Carlin"
Indie Game Programming

Sponsor:

#2 Glass_Knife   Moderators   -  Reputation: 4083

Like
0Likes
Like

Posted 03 August 2014 - 12:40 PM

On a side note, I just downloaded Visual Studio 2010 so eclipse would "just work."  It doesn't.  It seems while I was working with libraries and Java and the web and stuff, C++ by hand because something that a new programmer can't do anymore, which is kind of sad.


I think, therefore I am. I think? - "George Carlin"
Indie Game Programming

#3 Ohforf sake   Members   -  Reputation: 1789

Like
0Likes
Like

Posted 03 August 2014 - 01:24 PM

Can you share the corrupt exe file?

#4 Jan2go   Members   -  Reputation: 697

Like
0Likes
Like

Posted 03 August 2014 - 04:09 PM

Which MinGW version are you using? I'm using TDM-GCC 4.8.1 with Eclipse Luna (before that with Kepler and Juno) and never had any problem like that.

#5 Glass_Knife   Moderators   -  Reputation: 4083

Like
0Likes
Like

Posted 03 August 2014 - 08:45 PM

I have the same version.  Just downloaded it on Friday.  I am also using the newest Eclipse (Luna).


I think, therefore I am. I think? - "George Carlin"
Indie Game Programming

#6 Indifferent   Members   -  Reputation: 576

Like
0Likes
Like

Posted 03 August 2014 - 09:03 PM

This can happen if you've accidentally targeted a different architecture from the one you're running, so give the project settings a check. You could be building a 64-bit binary and then trying to run it on a 32-bit copy of Windows, as an example.


Edited by Indifferent, 03 August 2014 - 09:04 PM.


#7 Glass_Knife   Moderators   -  Reputation: 4083

Like
0Likes
Like

Posted 04 August 2014 - 08:05 AM

This can happen if you've accidentally targeted a different architecture from the one you're running, so give the project settings a check. You could be building a 64-bit binary and then trying to run it on a 32-bit copy of Windows, as an example.

 

I'm on windows 7, so there should be no problem running either 32 or 64 bit apps.  I have been trying to find a setup for teaching C++ that could use as many of the same tools as possible but still allow for Mac, Widows, or Linux.  I settled on Eclipse, but I had hoped installing and configuring the libraries and tool chains would be easier.


I think, therefore I am. I think? - "George Carlin"
Indie Game Programming

#8 Aardvajk   Crossbones+   -  Reputation: 5936

Like
2Likes
Like

Posted 04 August 2014 - 08:46 AM

What happens if you compile hello world from the command line using MinGW? At least that should tell you if the problem is the compiler or the IDE.

 

Put hello.cpp in a directory, command just g++ hello.cpp, then run a.out.

 

(This assumes your bin and include directories are set up by default, may not be the case if you have only used it via the IDE)

 

I've not had this problem with MinGW myself.


Edited by Aardvajk, 04 August 2014 - 08:49 AM.


#9 Glass_Knife   Moderators   -  Reputation: 4083

Like
0Likes
Like

Posted 04 August 2014 - 09:18 AM


What happens if you compile hello world from the command line using MinGW? At least that should tell you if the problem is the compiler or the IDE.

 

This was my thought for a next step.  I'll try it tonight.  I suspect I did something weird when installing it.  It seemed like a lot places to go wrong are built into the installer.


I think, therefore I am. I think? - "George Carlin"
Indie Game Programming

#10 Nypyren   Crossbones+   -  Reputation: 4129

Like
2Likes
Like

Posted 04 August 2014 - 12:00 PM

This can happen if you've accidentally targeted a different architecture from the one you're running, so give the project settings a check. You could be building a 64-bit binary and then trying to run it on a 32-bit copy of Windows, as an example.

 
I'm on windows 7, so there should be no problem running either 32 or 64 bit apps.  I have been trying to find a setup for teaching C++ that could use as many of the same tools as possible but still allow for Mac, Widows, or Linux.  I settled on Eclipse, but I had hoped installing and configuring the libraries and tool chains would be easier.


Windows 7 has both 32-bit and 64-bit editions. Definitely find out for sure which you're using!

http://windows.microsoft.com/en-us/windows7/find-out-32-or-64-bit

#11 Glass_Knife   Moderators   -  Reputation: 4083

Like
0Likes
Like

Posted 05 August 2014 - 03:41 PM

Sadness.  After some reboots, things just started working.  So no idea what was wrong...


I think, therefore I am. I think? - "George Carlin"
Indie Game Programming

#12 Lactose!   GDNet+   -  Reputation: 3207

Like
0Likes
Like

Posted 05 August 2014 - 04:20 PM

When in doubt, reboot. Then reboot again.

 

Nice to hear it's working now, at least :)



#13 Glass_Knife   Moderators   -  Reputation: 4083

Like
0Likes
Like

Posted 05 August 2014 - 05:02 PM

There was still some weirdness with -staticlib preprocessor flags, but it worked.


I think, therefore I am. I think? - "George Carlin"
Indie Game Programming

#14 Aardvajk   Crossbones+   -  Reputation: 5936

Like
0Likes
Like

Posted 06 August 2014 - 02:55 AM

There was still some weirdness with -staticlib preprocessor flags, but it worked.

 

Not too sure what -staticlib would have to do with the preprocessor, could you elaborate? I'd expect -staticlib to be a linker command to build a lib file rather than an exe, although I thought for MingW that was just -static?



#15 Glass_Knife   Moderators   -  Reputation: 4083

Like
0Likes
Like

Posted 06 August 2014 - 07:25 AM

 

There was still some weirdness with -staticlib preprocessor flags, but it worked.

 

Not too sure what -staticlib would have to do with the preprocessor, could you elaborate? I'd expect -staticlib to be a linker command to build a lib file rather than an exe, although I thought for MingW that was just -static?

 

 

So after I installed Visual Studio 2010 Express and rebooted, I fired Eclipse back up to try and use that.  Just for fun, I tried the MinGW *.exe again.  This time there was no error.  But nothing happened.  No error, no "Hello World!" output in the console, nothing.

 

Navigating to the Debug folder and running the exe by hand gave this error:

 

"The program can't start because libgcc_s_dw2-1.dll is missing from your computer." 

 

I had to add "-static-libgcc -static-libstdc++" to the linker flags to get it working...


I think, therefore I am. I think? - "George Carlin"
Indie Game Programming

#16 BitMaster   Crossbones+   -  Reputation: 3882

Like
0Likes
Like

Posted 06 August 2014 - 08:28 AM

Well, the alternative would have been to add libgcc_s_dw2-1.dll next to the created application or put it into the path.

The same goes for MSVC as well: you need to add/install the runtime DLLs (unless you compile with /MT instead of the default /MD), otherwise the program won't work. The difference is, the runtime will be in the path by default on development machines (but often not an the average user's). That's why you see those "I gave my program to a friend and he cannot use it"-threads every now and again.

Switching to static linkage for the runtime is obviously an option, but has ramifications: for example it can cause severe problems when you need to dynamically link C++ libraries which require you to pass ownership of objects over the DLL boundary (like for example Qt).

Edited by BitMaster, 06 August 2014 - 08:32 AM.


#17 Aardvajk   Crossbones+   -  Reputation: 5936

Like
2Likes
Like

Posted 06 August 2014 - 10:15 AM

Ah, linker not preprocessor. Makes sense.

MinGW is not a great out-of-the-box tool chain for sure :)





PARTNERS