Subject: Problems with mingw32.
From: [email-masked] ("Paulo Sérgio Caetano da Silva")

17 Jan 1997 01:43:51 -0800
Approved: [email-masked]
Distribution: cygnus
Message-ID: <[email-masked]>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Original-To: <[email-masked]>
X-MSMail-Priority: Normal
X-Priority: 3
X-Mailer: Microsoft Internet Mail 4.70.1155
Original-Sender: [email-masked]

Hi,
After a tricky installation of mingw32 over a previous
cygnus gcc (last version, I can't remember what is it now)
I tried to compile the included program. Compilation
itself runs fine, with no errors/warnings at all.
The link issued lots of windows related names as undefined.
Then I decided to include -luser32. Only rests an
undefined symbol name - `GetStockObject@4'. 
What library is missing? Would anybody
enlight me about the warnings also issued?

TIA

Here is the pertinent info...

===>The gcc link command line
gcc -o olawin.exe $LIBRARY_PATH/crt0.o olawin.o -lmingw32 -lgcc -lcrtdll
-luser32 -lkernel32

===>Messages I got
/usr/i386-cygwin32/lib/crt0.o(.data+0x0):crt0.c: multiple definition of
`stdin'
/usr/i386-cygwin32/lib/crt0.o(.data+0x0):crt0.c: first defined here
/usr/i386-cygwin32/lib/crt0.o(.data+0x4):crt0.c: multiple definition of
`stdout'
/usr/i386-cygwin32/lib/crt0.o(.data+0x4):crt0.c: first defined here
/usr/i386-cygwin32/lib/crt0.o(.data+0x8):crt0.c: multiple definition of
`stderr'
/usr/i386-cygwin32/lib/crt0.o(.data+0x8):crt0.c: first defined here
/usr/i386-cygwin32/lib/crt0.o(.data+0xc):crt0.c: multiple definition of
`__argc'
/usr/i386-cygwin32/lib/crt0.o(.data+0xc):crt0.c: first defined here
/usr/i386-cygwin32/lib/crt0.o(.data+0x10):crt0.c: multiple definition of
`__argv'
/usr/i386-cygwin32/lib/crt0.o(.data+0x10):crt0.c: first defined here
/usr/i386-cygwin32/lib/crt0.o(.data+0x14):crt0.c: multiple definition of
`_environ'
/usr/i386-cygwin32/lib/crt0.o(.data+0x14):crt0.c: first defined here
/usr/i386-cygwin32/lib/crt0.o(.text+0x0):crt0.c: multiple definition of
`mainCRTStartup'
/usr/i386-cygwin32/lib/crt0.o(.text+0x0):crt0.c: first defined here
ld: warning: cannot find entry symbol _WinMainCRTStartup; defaulting to
00401000
olawin.o(.text+0x63):olawin.c: undefined reference to `GetStockObject@4'

===>The source - olawin.c
#include <windows.h>

long FAR PASCAL _export ProcJan (HWND, UINT, UINT, LONG) ;

int PASCAL WinMain (HANDLE hCopia, HANDLE hCopiaAnterior,
                    LPSTR  lpszParamCmd, int nCmdMostrar)
     {
     static char szNomeAplic[] = "OlaWin" ;
     HWND        hjan ;
     MSG         msg ;
     WNDCLASS    classejan ;

     if (!hCopiaAnterior)
          {
          classejan.style         = CS_HREDRAW | CS_VREDRAW ;
          classejan.lpfnWndProc   = ProcJan ;
          classejan.cbClsExtra    = 0 ;
          classejan.cbWndExtra    = 0 ;
          classejan.hInstance     = hCopia ;
          classejan.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
          classejan.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
          classejan.hbrBackground = GetStockObject (WHITE_BRUSH) ;
          classejan.lpszMenuName  = NULL ;
          classejan.lpszClassName = szNomeAplic ;

          RegisterClass (&classejan) ;
          }

     hjan = CreateWindow (szNomeAplic,   // nome da classe da janela
                    "Programa OLA'",     //  titulo da janela
                    WS_OVERLAPPEDWINDOW, //  estilo da janela
                    CW_USEDEFAULT,       //  posicao x inicial
                    CW_USEDEFAULT,       // posicao y inicial
                    CW_USEDEFAULT,       // tamanho x inicial
                    CW_USEDEFAULT,       // tamanho y inicial
                    NULL,                // handle da janela-mae
                    NULL,                // handle do menu da janela
                    hCopia,              // handle da copia do programa
                    NULL) ;              // parametros de criacao

     ShowWindow (hjan, nCmdMostrar) ;
     UpdateWindow (hjan) ;

     while (GetMessage (&msg, NULL, 0, 0))
          {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
          }
     return msg.wParam ;
     }

long FAR PASCAL _export ProcJan (HWND hjan, UINT mensagem, UINT wParam,
                                                           LONG lParam)
     {
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        retang ;

     switch (mensagem)
          {
          case WM_PAINT:
               hdc = BeginPaint (hjan, &ps) ;

               GetClientRect (hjan, &retang) ;

               DrawText (hdc, "Ola', Windows!", -1, &retang,
                         DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

               EndPaint (hjan, &ps) ;
               return 0 ;

          case WM_DESTROY:
               PostQuitMessage (0) ;
               return 0 ;
          }

     return DefWindowProc (hjan, mensagem, wParam, lParam) ;
     }

-
For help on using this list, send a message to
"[email-masked]" with one line of text: "help".