IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Symbole externe non résolu


Sujet :

Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 22
    Points : 16
    Points
    16
    Par défaut Symbole externe non résolu
    Bonsoir à tous,
    Désolé de vous déranger mais n'étant pas très initié au C je sais plus quoi tenter pour résoudre mon problème.

    J'essaye de lancer un driver mais voici ce que j'obtiens lors de l'édition des liens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1>main.obj : error LNK2019: symbole externe non résolu __imp__StartServiceW@12 référencé dans la fonction "bool __cdecl _util_load_sysfile(wchar_t const *)" (?_util_load_sysfile@@YA_NPB_W@Z)
    1>main.obj : error LNK2019: symbole externe non résolu __imp__CloseServiceHandle@4 référencé dans la fonction "bool __cdecl _util_load_sysfile(wchar_t const *)" (?_util_load_sysfile@@YA_NPB_W@Z)
    1>main.obj : error LNK2019: symbole externe non résolu __imp__OpenServiceW@12 référencé dans la fonction "bool __cdecl _util_load_sysfile(wchar_t const *)" (?_util_load_sysfile@@YA_NPB_W@Z)
    1>main.obj : error LNK2019: symbole externe non résolu __imp__CreateServiceW@52 référencé dans la fonction "bool __cdecl _util_load_sysfile(wchar_t const *)" (?_util_load_sysfile@@YA_NPB_W@Z)
    1>main.obj : error LNK2019: symbole externe non résolu __imp__OpenSCManagerW@12 référencé dans la fonction "bool __cdecl _util_load_sysfile(wchar_t const *)" (?_util_load_sysfile@@YA_NPB_W@Z)
    Et voici la fonction incriminée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    bool _util_load_sysfile(LPCTSTR theDriverName) {
    	char aPath[1024];
    	char aCurrentDirectory[515];
    	SC_HANDLE sh = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    	if(!sh) {
    		return false;
    	}
    	GetCurrentDirectory(512, (LPWSTR)aCurrentDirectory);
    	_snprintf_s(aPath, 1022, "%s\\%s.sys", aCurrentDirectory, theDriverName);
    	printf("loading %s\n", aPath);
    	SC_HANDLE rh = CreateService(sh, 
    								theDriverName, 
    								theDriverName,
    								SERVICE_ALL_ACCESS,
    								SERVICE_KERNEL_DRIVER,
    								SERVICE_DEMAND_START,
    								SERVICE_ERROR_NORMAL,
    								(LPCWSTR)aPath,
    								NULL,
    								NULL,
    								NULL,
    								NULL,
    								NULL);
    	if(!rh) {
    		if(GetLastError() == ERROR_SERVICE_EXISTS) {
    			rh = OpenService(sh, theDriverName, SERVICE_ALL_ACCESS);
    			if(!rh) {
    				CloseServiceHandle(sh);
    				return false;
    			}
    		}
    		else {
    			CloseServiceHandle(sh);
    			return false;
    		}
    	}
    	if(rh) {
    		if(0 == StartService(rh, 0, NULL)) {
    			if(ERROR_SERVICE_ALREADY_RUNNING == GetLastError()) {
    				//no real problem
    			}
    			else {
    				CloseServiceHandle(sh);
    				CloseServiceHandle(rh);
    				return false;
    			}
    		}
    		CloseServiceHandle(sh);
    		CloseServiceHandle(rh);
    	}
    	return true;
    }
    Pourtant j'ai ajouté le répertoire "E:\Program Files\Microsoft Platform SDK\Lib".
    En plus j'ai vérifié les dépendances (http://msdn2.microsoft.com/en-us/lib...21(VS.85).aspx) et j'ai bien les fichiers : Advapi32.lib & Advapi32.dll.

    S'il vous plaît, une petite piste ? Merci.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Advapi32.lib est présent, mais l'as-tu ajouté au projet ?
    Project Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Arf désolé d'avoir posté pour si peu. :/

    C'était bien ça. Merci pour ta réponse rapide en tout cas.

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Encore quelque chose. Ca n'a pas vraiment de rapport à ma question précédente (faut-il créer un nouveau topic ?).

    Pour la portion de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ...
    SC_HANDLE rh = CreateService(sh, 
    						theDriverName, 
    						theDriverName,
    						SERVICE_ALL_ACCESS,
    						SERVICE_KERNEL_DRIVER,
    						SERVICE_DEMAND_START,
    						SERVICE_ERROR_NORMAL,
    						(LPCWSTR)"C:\\test.sys",
    						NULL,
    						NULL,
    						NULL,
    						NULL,
    						NULL);
    if(!rh) {
    	if(GetLastError() == ERROR_SERVICE_EXISTS) {
    		printf("StartService failed (%d)\n", GetLastError());
    		rh = OpenService(sh, theDriverName, SERVICE_ALL_ACCESS);
    		if(!rh) {
    			CloseServiceHandle(sh);
    			return false;
    		}
    	}
    	else {
    		CloseServiceHandle(sh);
    		return false;
    	}
    }
    if(rh) {
    	if(0 == StartService(rh, 0, NULL)) {
    		printf("StartService failed (%d)\n", GetLastError());
    ...
    Ca affiche :
    StartService failed (1073)
    StartService failed (123)

    En clair, la fonction CreateService provoque une erreur "ERROR_SERVICE_EXISTS" :
    "The specified service already exists in this database."

    Et la fonction StartService provoque l'erreur "ERROR_INVALID_NAME" :
    "The specified service name is invalid."

    Encore je peux comprendre la première erreur, par contre pour la deuxième, je comprend pas ?!?! Quelqu'un aurait une idée ? Merci.
    Le chemin "C:\\test.sys" est mal tapé ? (le fichier existe bien à cet emplacement).

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Je ne sais pas si cela a avoir avec ton problème mais dans tion appel, tu fait un cast qui ne peut pas marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (LPCWSTR)"C:\\test.sys"
    Tu est entrain de forcer le compilateur à prendre une chaine de caractère standard pour une chaine Unicode ce qui n'a rien à voir.

    Si tu veux que cela marche, il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (LPCWSTR)L"C:\\test.sys"
    Et dans ce cas peut être même que le (LPCWSTR) devient inutile
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour être précis, il suffit de
    Et si les bons headers sont inclus, tu peux utiliser _T à la place de TEXT, ce qui est plus rapide à taper.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. error LNK2019: symbole externe non résolu
    Par bugmenot dans le forum Visual C++
    Réponses: 6
    Dernier message: 24/11/2009, 01h02
  2. pb : symbole externe non résolu
    Par sheepman dans le forum Windows
    Réponses: 2
    Dernier message: 12/04/2007, 10h38
  3. Réponses: 3
    Dernier message: 06/08/2006, 18h17
  4. LNK2019: symbole externe non résolu __ftol2_sse
    Par ellipse dans le forum MFC
    Réponses: 1
    Dernier message: 26/04/2006, 23h48
  5. LNK2019 symbole externe non résolu
    Par devmat dans le forum MFC
    Réponses: 3
    Dernier message: 04/01/2006, 00h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo