Votre question

[Linker error] Dev cpp - HELP

Tags :
  • Shutdown
  • Programmation
Dernière réponse : dans Programmation
23 Juillet 2006 11:30:42

Salut !

Je testais un bout de code provenant du site de microsoft sur le redémarrage. Le voici :

  1. #include <windows.h>
  2.  
  3. BOOL MySystemShutdown()
  4. {
  5. HANDLE hToken;
  6. TOKEN_PRIVILEGES tkp;
  7.  
  8. // Get a token for this process.
  9.  
  10. if (!OpenProcessToken(GetCurrentProcess(),
  11. TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
  12. return( FALSE );
  13.  
  14. // Get the LUID for the shutdown privilege.
  15.  
  16. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
  17. &tkp.Privileges[0].Luid);
  18.  
  19. tkp.PrivilegeCount = 1; // one privilege to set
  20. tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  21.  
  22. // Récupère les privilèges des processus.
  23.  
  24. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
  25. (PTOKEN_PRIVILEGES)NULL, 0);
  26.  
  27. if (GetLastError() != ERROR_SUCCESS)
  28. return FALSE;
  29.  
  30. // Force les applications à se fermer
  31.  
  32. if (!ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0))
  33. return FALSE;
  34.  
  35. return TRUE;
  36. }


Le problème est que lorsque je le compile avec dev cpp, j'ai 2 erreurs flagrantes :

[linker error] undefined reference to 'WinMain@16'
et
[Build error] [Projet4.exe] Error 1

Que faire?

Merci d'avance !

Autres pages sur : linker error dev cpp help

23 Juillet 2006 11:47:52

C'est le code entier que tu nous as donné là ? Il manquerait pas le main ?
23 Juillet 2006 20:00:26

Si c'est le code entier que tu as, ajoutes à ton code ce qui suit (au cas où tu ne connaîtrais rien au Cpp et que tu souhaiterais juste à utiliser un prog pour quitter ton PC) :

----------------------------------------------
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MySystemShutdown();

exit(0);
}
-----------------------------------------------

Beaucoup d'arguments inutiles je trouve ! :-)
Contenus similaires
a b L Programmation
24 Avril 2008 20:42:42

Le point d'entrée du programme est soit la fonction "main" soit la fonction "WinMain" selon si tu es respectivement en mode console ou mode fenêtré windows.
2 Mai 2008 16:37:30

j'ai resolu les erreur de linker
en metant dans projet ,opsion de projet, parametre , -lmingw32 -lSDLmain -lSDL


voici mon programme


#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>


int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *caisse = NULL;
SDL_Rect positioncaisse;
SDL_Event event;
int continuer = 1;

SDL_Init(SDL_INIT_VIDEO);

ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE| SDL_DOUBLEBUF);
SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);

/* Chargement de Zozor */
caisse = SDL_LoadBMP("caisse.bmp");
SDL_SetColorKey(caisse, SDL_SRCCOLORKEY, SDL_MapRGB(caisse->format, 0, 0, 255));

/* On centre Zozor à l'écran */
positioncaisse.x = ecran->w / 2 - caisse->w / 2;
positioncaisse.y = ecran->h / 2 - caisse->h / 2;

SDL_EnableKeyRepeat(10, 10);
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP: // Flèche haut
positioncaisse.y--;
break;
case SDLK_DOWN: // Flèche bas
positioncaisse.y++;
break;
case SDLK_RIGHT: // Flèche droite
positioncaisse.x++;
break;
case SDLK_LEFT: // Flèche gauche
positioncaisse.x--;
break;
}
break;
}


SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(caisse, NULL, ecran, &positioncaisse); /* On place zozor à sa nouvelle position */
SDL_Flip(ecran); /* On met à jour l'affichage */
}

SDL_FreeSurface(caisse);
SDL_Quit();

return EXIT_SUCCESS;
}

le probleme est qu'il demare et s'arrete aussitot
je sais pas quoi faire
2 Mai 2008 17:05:19

-lmingw32 -lSDMmain -lSDL
avec le nom du document dans la case general
et pas console mais WIN32GUI
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS