2010/12/22 <lemke...@t-online.de>: > On Wed, 22 Dec 2010 15:11:18 +0100, Kai Tietz <ktiet...@googlemail.com> > wrote: > >> 2010/12/22 <lemke...@t-online.de>: >>> >>> On Wed, 22 Dec 2010 14:13:15 +0100, Frédéric Bron <frederic.b...@m4x.org> >>> wrote: >>> >>>>>>> I checked the Make file, it used this flag: >>>>>>> gcc -mno-cygwin -g -Wl,--add-stdcall-alias -Wl,--export-all-symbols >>>>>>> ... >>>>>> >>>>>> replace gcc by gcc-3 >>>>>> gcc 4 is now the default on cygwin but the cross compiler is not >>>>>> supported for that version. >>>>>> Frédéric >>>>> >>>>> What do you mean by not supported? JonY maintains the cross >>>>> compilers.... >>>> >>>> I meant that i686-w64-mingw32-gcc exists but not i686-w32-mingw32-gcc. >>>> I thought that w64 meant "built on win64" and mingw32 "run binary on >>>> win32". >>>> So it seems to me that with cygwin running on a 32 bit windows, it is >>>> not possible to cross compile to win32. However with a 64 bit windows >>>> you can produce win32 applications. >>>> However, I just tried to use i686-w64-mingw32-g++ on my win32 machine >>>> with a hello world program and it produces an binary that can be used >>>> from windows on that win32 machine. >>>> So my question to the list: what is the meaning of w64 in the name? >>> >>> Well, I don't know but I'd really like to know what is the replacement >>> these days for >>> >>> gcc -mno-cygwin -mwindows x.c >>> >>> I tried >>> >>> i686-w64-mingw32-gcc -mwindows -m32 x.c >>> >>> but get >>> >>> x.c:35:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before >>> 'WinMain' >>> >>> and that also for all other option combinations that made sense to me. >>> >>> Thanks, >>> Michael >> >> Hi, >> >> the -w64- within cross-compiler's triplet means that this compiler >> uses mingw-w64 runtime headers and libraries. The architecture part of >> triplet (i686|x86_64) makes the difference, if a cross-compiler >> produces binaries for i686 (means 32-bit), or for x86_64 (means >> 64-bit) windows native. >> Btw the -m32 is superflous for the i686-w64-mingw32 cross-compiler, as >> it just produces 32-bit and has no 64-bit capabilities builtin. >> Could you show please your x.c file, as the message you get is a >> compiler error already. I would assume that you missed to include some >> header, or you were defining something which cause here the harm. > > Well, the program compiles just fine with the old gcc-3 -mno-cygwin but > anyway, here's a stripped down version: > > > #define WINVER 0x0500 > #include <windows.h> > > int STDCALL WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int > nShow) { > return 0; > } > > > orion> i686-w64-mingw32-gcc -mwindows -m32 xx.c > xx.c:4:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before > 'WinMain' > orion> gcc-3 -mno-cygwin -mwindows -m32 xx.c > orion> > > Thanks, > Michael > > > -- > Problem reports: http://cygwin.com/problems.html > FAQ: http://cygwin.com/faq/ > Documentation: http://cygwin.com/docs.html > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > >
Well, the issue is STDCALL. We don't define this macro. Sorry, can find a single hint on that in msdn. Use here instead the standard WINAPI and it builds on all compilers you are using. Regards, Kai -- | (\_/) This is Bunny. Copy and paste | (='.'=) Bunny into your signature to help | (")_(") him gain world domination -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple