Erreur+erreur+erreur...pff [Résolu]

babaslow 66 Messages postés lundi 22 mai 2006Date d'inscription 25 août 2009 Dernière intervention - 12 juil. 2007 à 17:57 - Dernière réponse : babaslow 66 Messages postés lundi 22 mai 2006Date d'inscription 25 août 2009 Dernière intervention
- 12 juil. 2007 à 20:21
bonjour,

Après avoir suivi le tuto d'installation trouvé ici http://www.cppfrance.com/code.aspx?ID=38359 j'essaie maintenant de compiler ces 10 malheureuses lignes de code avec visual c++ :

#include <windows.h> // pour CreateProcessus
#include <stdio.h> // pour printf

int main(int argc, char **argv, char **envp)
{
STARTUPINFO si; // Structure spécifiant de bêtes attributs du programme (nom de la fenêtre, etc)
PROCESS_INFORMATION pi; // Structure qui sera remplie avec les données du nouveau processus
LPTSTR szCmdline="cmd"; // Le nom du programme à lancer

ZeroMemory( &si, sizeof(si) ); // Rempli "si" de zero par sécurité
si.cb = sizeof(si); // Donne sa propre taille à la structure (obligatoire même si c'est con)
ZeroMemory( &pi, sizeof(pi) ); // Rempli "pi" de zero par sécurité

// Lancer un autre processus (documenté sur http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp)
if( !CreateProcess( NULL, // Pas de nom de module (utiliser la ligne de commande)
szCmdline, // Nom du programme à la ligne de commande
NULL, // On s'en fout
NULL, // On s'en fout
FALSE, // On s'en fout
0, // On s'en fout
NULL, // On s'en fout
NULL, // On s'en fout
&si, // Pointeur vers notre STARTUPINFO
&pi ) // Pointeur vers notre PROCESS_INFORMATION
)
{
printf( "La création de processus a foiré (code %d).\n", GetLastError() );
return 1;
}
// Attendre que le processus enfant se termine
WaitForSingleObject( pi.hProcess, INFINITE ); // pi.hProcess est le handle vers le processus qu'on vient de créer

// Fermer les handles sur le processus et sur le thread enfant pour récupérer la mémoire
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );

return 0;
}

j'obtiens pour première erreur ça :

LIBCMT.lib(wincrt0.obj) : error LNK2001: symbole externe non résolu _WinMain@16

Bon je ne vais pas vous dire tout ce que j'ai tenté par la suite vu que rien n'a marché jusqu'à maintenant :(

Quelqu'1 peut me filer un coup de main ?

THANKS

 
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
THEwarrior333 192 Messages postés vendredi 19 mars 2004Date d'inscription 30 janvier 2008 Dernière intervention - 12 juil. 2007 à 19:40
3
Merci
WinMain ne possede pas ces arguments!!!

http://msdn2.microsoft.com/en-us/library/ms633559.aspx

Merci THEwarrior333 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

Commenter la réponse de THEwarrior333
dletozeun 546 Messages postés vendredi 13 février 2004Date d'inscription 9 janvier 2008 Dernière intervention - 12 juil. 2007 à 18:39
0
Merci
A premiere vue ca ressemble a une erreur de lien, une lib que t'as oublié d'ajouter a ton projet. Personnellement j'aime pas du tout vc++ alors je peux pas t'en dire bcp plus...mais il me semble que sous devcpp j'avais une erreur qui y ressemble quand j'oubliais de lier la lib libgdi32.a ( un truc dans ce style ) a mon projet...
Commenter la réponse de dletozeun
THEwarrior333 192 Messages postés vendredi 19 mars 2004Date d'inscription 30 janvier 2008 Dernière intervention - 12 juil. 2007 à 19:07
0
Merci
Je crois plutôt que ton projet est une application windows et
par conséquent, le point d'entrée est WinMain et non main. Du coup le
linker ne trouve pas de point d'entrée dans ton programme, c'est à dire
que WinMain est déclaré dans window.h mais n'est pas défini.
Commenter la réponse de THEwarrior333
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 12 juil. 2007 à 19:27
0
Merci
Exact, erreur de type de projet.

Remplace ton printf par
MessageBox(0, "La création de processus a foiré", "info", 0);
et tout ira bon.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
babaslow 66 Messages postés lundi 22 mai 2006Date d'inscription 25 août 2009 Dernière intervention - 12 juil. 2007 à 19:37
0
Merci
Tu ne me croiras pas mais j'avais déjà essayé de remplacer main par WinMain comme ceci :

int WinMain(int argc, char **argv, char **envp)

et là j'ai cette erreur qui apparait :

winmain.cpp
.\winmain.cpp(5) : warning C4007: 'WinMain' : doit être '__stdcall'
.\winmain.cpp(5) : error C2731: 'WinMain' : impossible de surcharger la fonction
.\winmain.cpp(4) : voir la déclaration de 'WinMain'

Comme j'y vais au pifomètre il y a de grandes chances pour que je m'y prenne comme un pied...est-ce que tu peux me dire comment on définit WinMain STP ? Merci.
Commenter la réponse de babaslow
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 12 juil. 2007 à 19:45
0
Merci
ohe babaslow, on ne fait pas du Win en C comme on peut faire du VB par tatonnements, faut sérieusement se documenter et ne pas hésiter à consulter MSDN.
Télécharge ça et faut user sans modération:
http://brunews.com/brunews/download/CP5.zip
http://brunews.com/brunews/download/CP5Sources.zip



http://brunews.com/brunews/download/JR4.zip


http://brunews.com/brunews/download/JR4Sources.zip



ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
babaslow 66 Messages postés lundi 22 mai 2006Date d'inscription 25 août 2009 Dernière intervention - 12 juil. 2007 à 20:21
0
Merci
Ok, merci à vous ;)
Commenter la réponse de babaslow

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.