Client web service gsoap

Résolu
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016 - 23 mars 2012 à 17:17
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016 - 27 mars 2012 à 11:46
Bonjour

Je suis en train de développer un client webservice en utilisant l'outil gsoap.
j'ai exécuté l'exec
wsdl2h nomheader.h monfichier.wsdl
ensuite j'ai généré les fichier du client en utilisant l'exec :
soapcpp2 -c nomheader.h

j'ai copié les fichiers généré sous mon projet ainsi que les fichiers stdsoap2.cpp et stdsoap2.h.
Je compile sous visual studio 2008 et j'ai recu le message d'erreur d'edition de lien suivant :
1>Compilation du manifeste en ressources en cours...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Édition des liens en cours...
1>soapC.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > * __cdecl soap_instantiate_std__string(struct soap *,int,char const *,char const *,unsigned int *)" (?soap_instantiate_std__string@@YAPAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAUsoap@@HPBD1PAI@Z) déjà défini(e) dans soapServerLib.obj
1>soapC.obj : error LNK2005: "struct ns1__getRep * __cdecl soap_instantiate_ns1__getRep(struct soap *,int,char const *,char const *,unsigned int *)" (?soap_instantiate_ns1__getRep@@YAPAUns1__getRep@@PAUsoap@@HPBD1PAI@Z) déjà défini(e) dans soapServerLib.obj
1>soapC.obj : error LNK2005: "struct ns1__getRepResponse * __cdecl soap_instantiate_ns1__getRepResponse(struct soap *,int,char const *,char const *,unsigned int *)" (?soap_instantiate_ns1__getRepResponse@@YAPAUns1__getRepResponse@@PAUsoap@@HPBD1PAI@Z) déjà défini(e) dans soapServerLib.obj
1>soapClientLib.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > * __cdecl soap_instantiate_std__string(struct soap *,int,char const *,char const *,unsigned int *)" (?soap_instantiate_std__string@@YAPAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAUsoap@@HPBD1PAI@Z) déjà défini(e) dans soapServerLib.obj
1>soapClientLib.obj : error LNK2005: "struct ns1__getRep * __cdecl soap_instantiate_ns1__getRep(struct soap *,int,char const *,char const *,unsigned int *)" (?soap_instantiate_ns1__getRep@@YAPAUns1__getRep@@PAUsoap@@HPBD1PAI@Z) déjà défini(e) dans soapServerLib.obj
1>soapClientLib.obj : error LNK2005: "struct ns1__getRepResponse * __cdecl soap_instantiate_ns1__getRepResponse(struct soap *,int,char const *,char const *,unsigned int *)" (?soap_instantiate_ns1__getRepResponse@@YAPAUns1__getRepResponse@@PAUsoap@@HPBD1PAI@Z) déjà défini(e) dans soapServerLib.obj
1>soapClientLib.obj : error LNK2005: "int __cdecl soap_call_ns1__getRep(struct soap *,char const *,char const *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (?soap_call_ns1__getRep@@YAHPAUsoap@@PBD1V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAV23@@Z) déjà défini(e) dans soapClient.obj
1>soapServer.obj : error LNK2005: "int __cdecl soap_serve(struct soap *)" (?soap_serve@@YAHPAUsoap@@@Z) déjà défini(e) dans soapServerLib.obj
1>soapServer.obj : error LNK2005: "int __cdecl soap_serve_request(struct soap *)" (?soap_serve_request@@YAHPAUsoap@@@Z) déjà défini(e) dans soapServerLib.obj
1>soapServer.obj : error LNK2005: "int __cdecl soap_serve_ns1__getRep(struct soap *)" (?soap_serve_ns1__getRep@@YAHPAUsoap@@@Z) déjà défini(e) dans soapServerLib.obj
1>soapServerLib.obj : error LNK2019: symbole externe non résolu "int __cdecl ns1__getRep(struct soap *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (?ns1__getRep@@YAHPAUsoap@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAV23@@Z) référencé dans la fonction "int __cdecl soap_serve_ns1__getRep(struct soap *)" (?soap_serve_ns1__getRep@@YAHPAUsoap@@@Z)
1>soapServer.obj : error LNK2001: symbole externe non résolu "int __cdecl ns1__getRep(struct soap *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (?ns1__getRep@@YAHPAUsoap@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAV23@@Z)
1>stdsoap2.obj : error LNK2001: symbole externe non résolu _namespaces
1>C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\testwebService\Debug\testwebService.exe : fatal error LNK1120: 2 externes non résolus
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\testwebService\testwebService\Debug\BuildLog.htm"
1>testwebService - 14 erreur(s), 7 avertissement(s)
======== Régénération globale : 0 a réussi, 1 a échoué, 0 a été ignoré ==========


Je ne sais pas pourquoi je reçois cette erreur, d'après mes connaissance soap ne nécessite aucune librairie toutes les fonctions sont dans les fichier générés ou bien ai je tors ??
Une aide serait très appréciable parce que je bloque vraiment !!

Merci D'avance

8 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
23 mars 2012 à 17:41
Bonjour

(Librairie => Bibliothèque, ça pique les yeux sinon :p, merci !).

__cdecl soap_instantiate_std__string(struct soap *,int,char const *,char const *,unsigned int *) déjà défini(e) dans soapServerLib.obj

Il te dit que cette fonction est définie deux fois. As-tu vérifié que la garde de ton header est correcte ? Tu sembles inclures plusieurs fois ton fichier (ce qui n'est pas grave tant que tu as une garde), ce qui défini plusieurs fois la même fonction. D'où ton erreur de link.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
26 mars 2012 à 16:53
Rebonjour

au fait lors de la génération j'ai généré le code relatif au serveur et au client et je les ai inclus dans le même projet.J'avais besoin juste du client fallait ajouter l'option -C lors de la génération du code soapcpp2 -c -C nomheader.h.

Toutes les erreur de linking de redefinition sont disparus
reste la dernière
1>stdsoap2.obj : error LNK2001: symbole externe non résolu _namespaces
1>C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\testwebService\Debug\testwebService.exe : fatal error LNK1120: 2 externes non résolus
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\testwebService\testwebService\Debug\BuildLog.htm"

les fichier stdsoap2.c et stdsoap2.h étaient avec l'outils gsoap et fallait les inclure dans le projet.C'est ce que j'ai fait mais j'arrive pas à trouver la cause de l'erreur !!!
3
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
27 mars 2012 à 11:46
Ennnnnnnnnfin ca compile, il manquait un #include "monfichier.nsmap" dans le fichier stdsoap2.cpp
3
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
23 mars 2012 à 23:56
Merci pour la réponse :)) c'est l'effet fin de semaine
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
26 mars 2012 à 17:22
l'option -C lors de la génération du code soapcpp2 -c -C nomheader.h.

Heu... Un header ne se compile pas ! On ne compile que les *.c

Impossible de t'aider avec si peu de détails. Fais au moins voir quelle est ta ligne de compilation...

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
26 mars 2012 à 18:15
peut être que j'ai utilisé le mot compiler par abus de langage (tout comme la traduction pour librairie )
mais au fait gsoap est un outil qui offre une commande wsdl2h.exe qui génère un headerfile à partir du fichier wsdl du web service qu'on veut utiliser et offre aussi la commande soapcpp2.exe qui génère le code à utiliser dans l'application cliente à partir du headerfile utilisé

On intègre ensuite le code généré dans notre projet.

je suis en train de suivre ces liens pour avancer

http://r0d.developpez.com/articles/tuto-gsoap-fr/#LI-A
http://users.skynet.be/pascalbotte/rcx-ws-doc/gsoap.htm

Après avoir généré le code et l’intégré dans notre projet, on ajoute deux autre fichier qui existe sous le dossier gsoap,

Ainsi On compile le projet et on devrait "Théoriquement" être capable d'utiliser les fonction implémenté dans le serveur,
Ce qui n'est pas mon cas parce que je n'arrive toujours pas à compiler le projet à cause de cet erreur d’édition de lien.

1>Édition des liens en cours...
1>stdsoap2.obj : error LNK2001: symbole externe non résolu _namespaces
1>C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\testWS28\Debug\testWS28.exe : fatal error LNK1120: 1 externes non résolus
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\testWS28\testWS28\Debug\BuildLog.htm"
1>testWS28 - 2 erreur(s), 0 avertissement(s)
0
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
26 mars 2012 à 18:18
les deux autres fichier à ajouter qui existe sous le répertoire gsoap sont stdsoap2.cpp et stdsoap2.h
l'outils gsoap est téléchargeable sur ce lien
http://sourceforge.net/projects/gsoap2/
0
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
27 mars 2012 à 11:00
Bonjour

J'ai passé une journée bloqué

vous trouverez mon code dans le lien suivant si quelqu'un pourrait m'aider
http://www.4shared.com/rar/734gR8I3/file.html
0
Rejoignez-nous