Je suis le tuto:Quel est l'équivalent de l'option -mwindows de gcc dans cmake?
http://zetcode.com/tutorials/gtktutorial/firstprograms/
Il fonctionne, mais chaque fois que je double clic sur l'exécutable, il y a une console que je ne veux pas là.
Comment se débarrasser de cette console?
J'ai essayé ceci:
add_executable(Cmd WIN32 cmd.c)
Mais cette erreur fatale a obtenu:
MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function ___tmainCRTStartup
Cmd.exe : fatal error LNK1120: 1 unresolved externals
Tout en utilisant gcc fonctionne directement:
gcc -o Cmd cmd.c -mwindows ..
Je devine qu'il a quelque chose à faire avec la fonction d'entrée: int main(int argc, char *argv[])
, mais pourquoi gcc fonctionne?
Comment puis-je le faire fonctionner avec cmake
?
MISE À JOUR
Permettez-moi coller le code source ici pour des raisons pratiques:
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
MAJ2
Pourquoi gcc -mwindows
fonctionne mais add_executable(Cmd WIN32 cmd.c)
pas?
Peut-être que ce n'est pas l'équivalent de -mwindows
dans cmake?
Mais je peux utiliser gcc pour construire un programme de fenêtre avec 'main', pourquoi pas' cmake'? BTW, pouvez-vous élaborer ce qu'est une fonction «WinMain» propper? J'ai essayé de changer 'main' en' WinMain' mais ne fonctionne toujours pas. – Gtker
'int main (int, char **)' est la version console du point d'entrée. 'int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)' est la version fenêtrée du point d'entrée. – Blindy
À propos de votre première question, cmake fait exactement ce que vous lui dites de faire. Vous ne devriez pas demander "pourquoi ne peut pas cmake?", Vous devriez demander "pourquoi je ne peux pas dire à cmake de ...?". – Blindy