Avatar billede cytox Nybegynder
07. februar 2010 - 22:30 Der er 11 kommentarer og
1 løsning

MinGW: Compile C program i Win mode (ikke console)

Hej,

Jeg er gået igang med at porte alle mine C# programmer og libs
til C og er hurtigt rendt ind i et lille problem;
med C# compileren er der en 'target' switch
som fungere således:
csc.exe /t:exe foo.cs      //konsol program
csc.exe /t:winexe foo.cs  //windows program
csc.exe /t:library foo.cs  //dll

og jeg ville gerne have fat i den her 'winexe' mode i gcc
så mine programmer ikke kører konsollen.

fx:
jeg har et lille 'void' program som udføre en opgave med det samme uden bruger input og derefter lukker ned, og i en stuation
som den er det meget mere praktisk at programmet udfører opgaven
uden det her konsol vindue der flasher skærmen kort.

så hvordan gør jeg det med MinGW/gcc.exe ?

Tak :)
Avatar billede arne_v Ekspert
07. februar 2010 - 22:47 #1
console app:
  ingenting

win app:
  -mwindows

DLL:
  -shared
Avatar billede cytox Nybegynder
07. februar 2010 - 22:47 #2
Beklager,

Jeg tror jeg er træt :P
havde fuldstændig overset switchen: --target-help

Så til dem der måtte have samme problem så var løsningen:
gcc.exe -mwindows -o foo.exe foo.c


Mvh. Cytox
Avatar billede cytox Nybegynder
07. februar 2010 - 22:49 #3
Whoops, der var nogen der var hurtigere :)

Du smider bare et svar og så får du dine point arne.

Og tak for hjælpen alligevel :)

Mvh. Cytox
Avatar billede arne_v Ekspert
07. februar 2010 - 22:55 #4
svar
Avatar billede arne_v Ekspert
07. februar 2010 - 22:57 #5
Har du styr på hvordan du laver en WinMain?
Avatar billede cytox Nybegynder
07. februar 2010 - 23:04 #6
Øøøh nu bliver jeg i tvivl,
dit spørgsmål lyder så simpelt at jeg bliver i tvivl om jeg ved hvad du tænker på når du siger winmain ?

altså hvis vi tænker det samme så:

#include <string.h>

int main(void)
{
    printf("WinMain du tænkte på ?");
    return 0;
}

men hvis det ikke var det, så lytter jeg gerne hvad en (mig bekendt) erfaren C/C++ programmør som dig har at sige :)

Mvh. Cytox
Avatar billede arne_v Ekspert
07. februar 2010 - 23:33 #7
#include <windows.h>
#include <tchar.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MessageBox(NULL, _T("Sådan en WinMain !"), _T("Note"), MB_OK);
    return 0;
}
Avatar billede cytox Nybegynder
07. februar 2010 - 23:43 #9
Nu bliver det pinligt, (og jeg undskylder med at min C/C++ erfaring måles i timer)

Jeg kan se den fungere som en alternativ main, men hvad er formålet med den ?

Da dette måske ikke er så relevant for dette spørgsmål,
så er du yderst velkommen til at kontakte mig via min mail:
cytox .AT. live _DoT_ D K

Mvh. Cytox
Avatar billede arne_v Ekspert
07. februar 2010 - 23:50 #10
Jeg mener at det særdeles relevant for spørgsmålet.

Jeg er måske ikke den rette til at besvare det.

Men de to link forklarer det.

For en console app bruger du main. For en windows GUI app bruger du WinMain.
Avatar billede arne_v Ekspert
07. februar 2010 - 23:50 #11
Og jeg ved ikke hvad der sker ved at vælge den forkerte. Men det er normalt altid en god ting at gøre tingene "rigtigt".
Avatar billede cytox Nybegynder
08. februar 2010 - 00:10 #12
Ah nu ser jeg det,

Hmm det bliver jeg helt klart nødt til at ha fulgt op på,
Det er en af mange nye ting som ikke var gældende i C# :)

Men endnu engang tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester