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

C Discussion :

Erreur de compile service


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut Erreur de compile service
    Bonjour

    Je possède Visual C++ 2005 Express avec Platefrom SDK 2003 RC et tout semble bien fonctionné.
    J'ai essai de créer un service windows or je me suis confronté à un gros problème.

    Je possède plusieurs exemples et aucun fonctionne !Pourtant ils sont simple et je pense réellement quemon Visual C++ a un problème ?!

    Voilà ce que j'ai fais jusqu'à présent.
    J'ai fais un nouveau Win32 Console Application avec en type "Console application" et précompiled header (sans MFC la case est grisé).
    J'ai collé l'ensemble de l'exemple de ce lien :http://msdn.microsoft.com/library/de...n_function.asp

    A noté que j'ai gardé #include <stdafx.h> initialement présent dans la page cpp par défaut.
    Et je compile !Voici la liste des erreurs ci dessous.

    Merci d'avance !



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    1>------ Build started: Project: Service_install, Configuration: Debug Win32 ------
    1>Compiling...
    1>Service_install.cpp
    1>Linking...
    1>Service_install.obj : error LNK2019: unresolved external symbol __imp__StartServiceCtrlDispatcherA@4 referenced in function _main
    1>Service_install.obj : error LNK2019: unresolved external symbol "void __cdecl MyServiceStart(unsigned long,char * *)" (?MyServiceStart@@YAXKPAPAD@Z) referenced in function _main
    1>Service_install.obj : error LNK2019: unresolved external symbol __imp__wsprintfA referenced in function "void __cdecl SvcDebugOut(char *,unsigned long)" (?SvcDebugOut@@YAXPADK@Z)
    1>N:\Visual Studio 2005\Projects\Service_install\Debug\Service_install.exe : fatal error LNK1120: 3 unresolved externals
    1>Build log was saved at "file://n:\Visual Studio 2005\Projects\Service_install\Service_install\Debug\BuildLog.htm"
    1>Service_install - 4 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Il faut que tu fasses le lien avec une bibliotheque quelconque. Ca doit etre dans la doc. Les gens du forum Developpement Windows devraient pouvoir t'aider.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Pas du C (fichier .cpp, et ta fonction MyServiceStart() possède un nom C++).
    Renomme tes fichiers (y compris stdafx) en .c, fais un Rebuild All, et on verra.

    Poste des parties concernées de ton code aussi, car là, il y a carrément une fonction à toi qui n'est pas trouvée...
    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.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    Bonjour et merci pour vos réponses!

    Je changement d'extension n'a rien changé malheureusement.
    J'ai essayé le code ici : http://c.developpez.com/faq/vc/?page...wToMakeService
    Et là :http://chgi.developpez.com/windows/services/

    Autant dire que je me donne du mal.. mais tous sans succés !
    J'ai à chanque fois plein d'erreur. Le pire c'est que je viens de tester sous Visual studio 6 et tout les codes fonctionnes
    Mais je suis obligé de développé mon service sous visual c++ 2005 Express.

    Que dois je faire ?

    Je ne peux pas trop détaillé mes erreurs car ils sont trop nombreux et change par rapport au code example, pourtant il fonctionne tous sauf sur mon Visual

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Je viens de voir des "char *" dans le nom.
    Es-tu sûr que tu n'as pas des problèmes d'unicode ou de TCHAR ?

    Et au fait: Tu as testé des programmes plus simples avec ton VS 2005 ? Histoire de vérifier que le SDK est bien installé pour tes deux versions de Visual, etc.

    Déjà, faire tourner un simple programme avec une MessageBox()...
    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.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    Bonjour Médinoc,

    J'ai réussit à faire tourné des programmes très simples sous viusal 2005 et j'ai bien installé sdk en précisant bien les libraries...

    Après j'ai effectivement vu que je devais (il me semble) changer le unicode en multicode..
    Mais sans grand succée puisque en Use Unicode Character Set
    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
     
    1>------ Build started: Project: Testservice2, Configuration: Debug 
    Win32 ------
    1>Compiling...
    1>stdafx.cpp
    1>Compiling...
    1>Testservice2.cpp
    1>n:\visual studio 
    2005\projects\testservice2\testservice2\testservice2.cpp(14) : error 
    C2664: 'GetCurrentDirectoryW' : cannot convert parameter 2 from 'char 
    [1024]' to 'LPWSTR'
    1>        Types pointed to are unrelated; conversion requires 
    reinterpret_cast, C-style cast or function-style cast
    1>n:\visual studio 
    2005\projects\testservice2\testservice2\testservice2.cpp(19) : error 
    C2664: 'CreateServiceW' : cannot convert parameter 2 from 'const char 
    [11]' to 'LPCWSTR'
    1>        Types pointed to are unrelated; conversion requires 
    reinterpret_cast, C-style cast or function-style cast
    1>n:\visual studio 
    2005\projects\testservice2\testservice2\testservice2.cpp(20) : error 
    C2440: '=' : cannot convert from 'const char [35]' to 'LPWSTR'
    1>        Types pointed to are unrelated; conversion requires 
    reinterpret_cast, C-style cast or function-style cast
    1>Build log was saved at "file://n:\Visual Studio 
    2005\Projects\Testservice2\Testservice2\Debug\BuildLog.htm"
    1>Testservice2 - 3 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    En Use Multi-Byte Character Set
    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
     
    1>------ Build started: Project: Testservice2, Configuration: Debug 
    Win32 ------
    1>Compiling...
    1>stdafx.cpp
    1>Compiling...
    1>Testservice2.cpp
    1>n:\visual studio 
    2005\projects\testservice2\testservice2\testservice2.cpp(15) : warning 
    C4996: 'strcat' was declared deprecated
    1>        c:\program files\microsoft visual studio 
    8\vc\include\string.h(78) : see declaration of 'strcat'
    1>        Message: 'This function or variable may be unsafe. Consider 
    using strcat_s instead. To disable deprecation, use 
    _CRT_SECURE_NO_DEPRECATE. See online help for details.'
    1>Linking...
    1>Testservice2.obj : error LNK2019: unresolved external symbol 
    __imp__CloseServiceHandle@4 referenced in function _main
    1>Testservice2.obj : error LNK2019: unresolved external symbol 
    __imp__ChangeServiceConfig2A@12 referenced in function _main
    1>Testservice2.obj : error LNK2019: unresolved external symbol 
    __imp__CreateServiceA@52 referenced in function _main
    1>Testservice2.obj : error LNK2019: unresolved external symbol 
    __imp__OpenSCManagerA@12 referenced in function _main
    1>N:\Visual Studio 2005\Projects\Testservice2\Debug\Testservice2.exe : 
    fatal error LNK1120: 4 unresolved externals
    1>Build log was saved at "file://n:\Visual Studio 
    2005\Projects\Testservice2\Testservice2\Debug\BuildLog.htm"
    1>Testservice2 - 5 error(s), 1 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Donc: En unicode, ça ne compile pas.
    Tu ne passes pas la compilation, il est donc impossible de savoir si tu as ou non des erreurs de linkage.

    En multi-byte, ça compile, mais ça fait des erreurs de linkage.

    Vérifie que ton programme est bien lié à advapi32.lib (la lib d'importation de advapi32.dll, qui contient la fonction CloseServiceHandle()...)
    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.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    Rebonjour et merci !

    J'ai trouvé advapi32.dll dans le repertoire C:\WINDOWS\system32 et C:\WINDOWS\system32\dllcache.
    Dans Visual 2005/Outils/Option/Projets et solution/VC++ Directories /fichiers librairies il y a bien C:\WINDOWS\system32.
    J'ai rajouté C:\WINDOWS\system32\dllcache mais sans changement !

    Y a t-il d'autres choses à faire ? Est celà dont tu parles quand tu "vérifie que ton programme est bien lié avec advapi32.dll " ?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Relis mon post...

    Vérifie que le projet est bien lié à advapi32.LIB.

    Au pire, tu testes: Si ça marche quand tu rajoutes ceci dans un de tes fichiers source, c'est que le projet n'est pas lié de lui-même à advapi32.lib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib, "advapi32.lib")
    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.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    Un grand merci Médinoc !
    Et merci pour ta rapidité à toute épreuve, celà me permet de bien commencer la journée et la semainen grace à toi !

    Excuse moi, pour avoir mal lu ton dernier post.
    Donc j'ai rajouté ta ligne et tout fonctionne très bien.

    Par contre j'ai pour le coup une petite question subsidiaire :
    AdvAPI32.Lib se trouve dans "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib".
    Ce repertoire est présent dans :
    Visual 2005/Outils/Option/Projets et solution/VC++ Directories /fichiers librairies..
    Donc comment lier le projet de lui-même avec advapi32.lib ?

    Et encore merci, ton aide me dépanne vraiment !

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Tu rajoutes advapi32.lib dans les options du projet.
    Configuration properties -> Linker -> Input -> Additional dependencies.

    Ce que je trouve bizarre, c'est qu'advapi32.dll devrait être dans les "default libraries", mais je ne sais même pas où on peut les régler...
    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.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    Celà a marché !

    Dans les Additional dependencies., il y avait kernel32.lib.
    De plus, c'était écrit inhérited value :
    kernel32.lib
    user32.lib
    gdi32.lib
    winspool.lib
    comdlg32.lib
    advapi32.lib
    shell32.lib
    ole32.lib
    oleaut32.lib
    uuid.lib

    Je ne sais pas trop ce que celà veux dire, mais le tout c'est que ca marche !

    Je tenais donc à te remercie, est ce un petit cadeau de neol avant l'heure
    Réellement donc merci, je pense que j'aurais du abandonnée sans toi !Donc MERCI Beaucoup Médinoc

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Un petit clic sur ?
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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