A final word on -lkernel32
Jim Balter
jqb@netcom.com
Thu Mar 27 14:38:00 GMT 1997
For those who have been having trouble following the discussion and
examples regarding the -lkernel32 bug that Phil Smith encountered:
Using gcc ... -lkernel32 on some systems with some code will cause
that code to fail, when not including -lkernel32 will not.
It isn't necessary to include -lkernel32, because under b17 gcc
automatically includes it. I am intentionally being vague about
the circumstances, because I don't want to overstate the case
since I cannot conclusively test all cases. Here is a somewhat
minimal case that fails on my Win NT 4.0 system with service pack 2.
It is the same as a previous example I posted, but avoids an
irrelevant objection about an irrelevant warning about a prototype.
This is verbatim cut and paste from my console window:
/tmp$ cat >>mytest.c
#include <windows.h>
int STDCALL
WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
return 0;
}
HANDLE ThisIsNeverCalled(void)
{
return GetModuleHandle(0);
}
^Z
/tmp$ gcc -o good mytest.c
/tmp$ ./good
/tmp$ gcc -o bad mytest.c -lkernel32
/tmp$ ./bad
(bad.exe 1353) In cygwin_except_handler
(bad.exe 1353) Exception trapped!
(bad.exe 1353) exception C0000005 at 40FC
(bad.exe 1353) exception: ax 400000 bx 400000 cx 0 dx 40205C
(bad.exe 1353) exception: si 243F5B8 di 100114F3 bp 243F5A4 sp 243F598
(bad.exe 1353) exception is: STATUS_ACCESS_VIOLATION
(bad.exe 1353) Stack trace:
(bad.exe 1353) frame 0: sp = 0x243F3C8, pc = 0x10012D72
(bad.exe 1353) frame 1: sp = 0x243F3E8, pc = 0x77F94492
(bad.exe 1353) frame 2: sp = 0x243F40C, pc = 0x77F88E93
(bad.exe 1353) frame 3: sp = 0x243F498, pc = 0x77F76202
(bad.exe 1353) frame 4: sp = 0x243F5A4, pc = 0x10011DE4
(bad.exe 1353) frame 5: sp = 0x243FF9C, pc = 0x10011DF7
(bad.exe 1353) frame 6: sp = 0x243FFA8, pc = 0x4010F4
(bad.exe 1353) frame 7: sp = 0x243FFB8, pc = 0x401012
(bad.exe 1353) frame 8: sp = 0x243FFC0, pc = 0x77F1B26B
(bad.exe 1353) frame 9: sp = 0x243FFF0, pc = 0x0
(bad.exe 1353) End of stack trace
/tmp$
-
For help on using this list, send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".
More information about the Cygwin
mailing list