cs_Bashi
Messages postés7Date d'inscriptionmardi 6 mai 2003StatutMembreDernière intervention25 janvier 2004
-
8 mai 2003 à 18:42
matrez
Messages postés2Date d'inscriptionmercredi 9 juin 2004StatutMembreDernière intervention17 décembre 2005
-
17 déc. 2005 à 07:13
Bonjour, j'ai essayé d'utiliser un code c pour exécuter du java sous windows, je le compile avec Digital Mars. Mon fichier java est GPS.java et j'ai un main a l'intérieur, alors j'ai donné que variable de class GPS.main. Lorsque je compile il m'indique une erreur a la ligne: extraireDossierRacine (::GetCommandLine (), dossierCourant) ; a cause des 2 points, alors je les ai enlevé.
Maintenant, quand je compile cela m'indique:
link extraireDossierRacine,,,user32+kernel32/noi;
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
extraireDossierRacine.obj(extraireDossierRacine)
Error 42: Symbol Undefined _ShellExecuteA@24
--- errorlevel 1
Mon code complet est:
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
void extraireDossierRacine (char*, char*) ;
int dernierIndexDe (char*, char) ;
void formerArguments (char*, char*) ;
char *prgmJava = "javaw.exe", //ou "java.exe" (interperteur Java)
*classePrincipale = "GPS.main";
//ICI il faut determiner la classe principale : ".<classePrincipale>"
// ex : "Editeur.lancer"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) {
char dossierCourant [100], arguments [100] ;
extraireDossierRacine (GetCommandLine (), dossierCourant) ;
formerArguments (arguments, dossierCourant) ;
ShellExecute (NULL, NULL, prgmJava, arguments, NULL, SW_SHOWNORMAL) ;
return 0 ;
}
//permet d'extraire le dossier où existe le fichier à partir de son chemin
void extraireDossierRacine (char *chemin, char *dossierRacine) {
int l = dernierIndexDe (chemin, '\\') ;
strncpy (dossierRacine, chemin, l) ;
dossierRacine [l] = '"' ;
dossierRacine [l + 1] = '\0' ;
}
//renvoie la dernière position d'un caractere dans une chaine
int dernierIndexDe (char *chaine, char c) {
for (int i = strlen (chaine); i > 0; i--)
if (chaine [i] == c)
return i ;
return -1 ;
}
//forme la liste des arguments : "-cp <dossierCourant> <classePrincipale>"
void formerArguments (char *arguments, char *dossierCourant) {
strcpy (arguments, "-cp ") ;
strcat (arguments, dossierCourant) ;
strcat (arguments, " ") ;
strcat (arguments, classePrincipale) ;
}
Est-ce que quelqu'un peut m'aider à le faire marcher?
Merci