🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.os.ms-windows.programmer.misc
3 messages
3 total messages Started by Tom Burke Sun, 22 Nov 1998 00:00
OK, I gots a little problem with my linker, here...
#2894
Author: Tom Burke
Date: Sun, 22 Nov 1998 00:00
107 lines
4104 bytes
I'm trying to teach myself windows programming, & I seem to be having
some problems...

Win95, 486DX100, 32M RAM...

Borland C++5.02 (fresh install)

This piece of code:

/*------------------------------------------------------------
   HELLOWIN.C -- Displays "Hello, Windows 95!" in client area
                 (c) Charles Petzold, 1996
  ------------------------------------------------------------*/

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
     {
     static char szAppName[] = "HelloWin" ;
     HWND        hwnd ;
     MSG         msg ;
     WNDCLASSEX  wndclass ;

     wndclass.cbSize        = sizeof (wndclass) ;
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
     wndclass.hIconSm       = LoadIcon (NULL, IDI_APPLICATION) ;

     RegisterClassEx (&wndclass) ;

     hwnd = CreateWindow (szAppName,         // window class name
              "The Hello Program",     // window caption
                    WS_OVERLAPPEDWINDOW,     // window style
                    CW_USEDEFAULT,           // initial x position
                    CW_USEDEFAULT,           // initial y position
                    CW_USEDEFAULT,           // initial x size
                    CW_USEDEFAULT,           // initial y size
                    NULL,                    // parent window handle
                    NULL,                    // window menu handle
                    hInstance,               // program instance handle
              NULL) ;               // creation parameters

     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;

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

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM
lParam)
     {
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        rect ;

     switch (iMsg)
          {
          case WM_CREATE :
               PlaySound ("hellowin.wav", NULL, SND_FILENAME |
SND_ASYNC) ;
               return 0 ;

          case WM_PAINT :
            hdc = BeginPaint (hwnd, &ps) ;

               GetClientRect (hwnd, &rect) ;

               DrawText (hdc, "Hello, Windows 95!", -1, &rect,
                DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

            EndPaint (hwnd, &ps) ;
               return 0 ;

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

     return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
     }


Compiles with 2 warinngs (trivial, referring to unused instances)

Will not link, get the following error:
    Error:  Unresolved external '_main' referenced from
C:\BC5\LIB\COX32.OBJ

Can anyone help?

THX
Re: OK, I gots a little problem with my linker, here...
#2895
Author: Chris Marriott
Date: Sun, 22 Nov 1998 00:00
20 lines
1607 bytes
Tom Burke wrote in message <36586EBF.CC89AFA5@erols.com>...
>Will not link, get the following error:
>    Error:  Unresolved external '_main' referenced from
>C:\BC5\LIB\COX32.OBJ
>
>Can anyone help?


The linker is attempting to create a CONSOLE application with an entry point
of "main"; you need to tell it to create a WINDOWS application which has an
entry point of "WinMain". In Microsoft's linker you do this by adding a
"/subsystem:windows" flag to the linker command line; I'd imagine that
Borland's linker has a similar option.

Chris
-----------------------------------------------------------------------
Chris Marriott, SkyMap Software, UK (chris@skymap.com)
Visit our web site at http://www.skymap.com
Astronomy software written by astronomers, for astronomers
Re: OK, I gots a little problem with my linker, here...
#2896
Author: Norman Bullen
Date: Sun, 22 Nov 1998 00:00
31 lines
1594 bytes
Borland C++ is attempting to build a "console" application rather than a
Windows GUI application. Console applications must have an
   int main(int, char**)
function while GUI applications must have an
   int WINAPI WinMain( )
function as you have provided.

Assuming you are using the Borland IDE, you can change your application
to GUI by:
1) Open the Project window
2) Right click on the target (.EXE) line and select Target Expert
3) In the Target Expert dialog, change the Target Model to "GUI".

Next time you start a project make sure to select "GUI" as the Target
Model to start with.

Norm


Tom Burke wrote:
> 
> I'm trying to teach myself windows programming, & I seem to be having
> some problems...
> 
> Win95, 486DX100, 32M RAM...
> 
> Borland C++5.02 (fresh install)
> 
> This piece of code:
> 
    < code snipped >
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads