olemongo Skrevet 8. februar 2007 Del Skrevet 8. februar 2007 (endret) 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 8. februar 2007 av olemongo Lenke til kommentar
Dead_Rabbit Skrevet 8. februar 2007 Del Skrevet 8. februar 2007 (endret) 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 Endret 8. februar 2007 av staalezh Lenke til kommentar
Giddion Skrevet 8. februar 2007 Del Skrevet 8. februar 2007 (endret) 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 8. februar 2007 av Giddion Lenke til kommentar
Dead_Rabbit Skrevet 8. februar 2007 Del Skrevet 8. februar 2007 Ah, er det det som er dealen med "stdafx.h". Så konklusjonen blir vel den at hvis trådstarter endrer parameteret fra DWORD til int, bør kompilatoren være i stand til å finne funksjonen. \o/ Lenke til kommentar
olemongo Skrevet 8. februar 2007 Forfatter Del Skrevet 8. februar 2007 (endret) Jepp, det gjorde susen. Takk for svar. Men, det kommer ikke noe Windows-vindu opp, bare et DOS-vindu. Fint om noen vet hvorfor. Endret 9. februar 2007 av olemongo Lenke til kommentar
dizzykeys Skrevet 11. februar 2007 Del Skrevet 11. februar 2007 Jepp, det gjorde susen. Takk for svar. Men, det kommer ikke noe Windows-vindu opp, bare et DOS-vindu. Fint om noen vet hvorfor. 7901414[/snapback] Project -> Project Options -> sett "type" til Win32 GUI Lenke til kommentar
Jorgur Skrevet 12. februar 2007 Del Skrevet 12. februar 2007 (endret) 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 12. februar 2007 av Jorgur Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå