Gå til innhold

undefined reference to `WinMain@16'


Anbefalte innlegg

Jeg har forsøkt å kompilere dette Windows-programmet en stund nå, men får stadig denne feilmeldingen:

 

C:\Dev-Cpp\lib/libmingw32.a(main.o)(.text+0x106):main.c: undefined reference to `WinMain@16'

collect2: ld returned 1 exit status

 

 

Er jeg nødt til å bruke spesielle innstillinger når jeg skal lage et program for windows?

 

Her er programmet:

 

EDIT: Det virket etter å ha byttet ut WinMain med main, men det kommer bare opp et DOS-vindu.

 

#include <windows.h>
LRESULT CALLBACK MainProc (HWND, UINT, WPARAM, LPARAM);


LPTSTR lpszClassName = "App";
WNDCLASS wc;
MSG msg;
HWND hwnd;
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, DWORD iCmdShow)
{

wc.lpszClassName = lpszClassName;
wc.lpfnWndProc = MainProc;
wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( NULL, IDC_ARROW );
wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1 );
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;

RegisterClass(&wc);

hwnd = CreateWindow
(lpszClassName,"Main Window",WS_OVERLAPPEDWINDOW,0,0,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);


while (GetMessage(&msg, NULL, 0, 0) > 0) 
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;

}

LRESULT CALLBACK MainProc (HWND hwnd1, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch(msg)
  {
      case WM_DESTROY:
          PostQuitMessage(0);
          return 0;
  }
  return DefWindowProc(hwnd, msg, wParam, lParam);
}

 

Jeg bruker GCC med Bloodshed C++ IDE

Endret av olemongo
Lenke til kommentar
Videoannonse
Annonse
Programmet finner ikke main funksjonen. Litt usikker, men det er mulig du må inkludere "stdafx.h" eller noe sånt. Lenge siden jeg har koda noe under windows. :)

 

Edit: feilen skjer mao. under linkina

7898636[/snapback]

 

i vc så er "stdafx.h" default navnet på pre-kompilerte headeren og er ikke denne satt opp så har den ingen funksjon og man trenger den ikke for å få normal kode til å fungere (hvis man overhode trenger den)

 

 

Den eneste feilen jeg ser er at iCmdShow skal være int og ikke DWORD

Endret av Giddion
Lenke til kommentar

Da kommer det ikke noe i det hele tatt.

Jeg har prøvd å kompilere det programmet som var med Dev++, og det virket helt fint, uten å måtte velge Win32 GUI.

 

EDIT: Fant ut det selv. Var noe tull med valg av ikon i utfylling av WNDCLASS wc.

Endret av Jorgur
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...