Client web service gsoap [Résolu]

cs_aymen87 109 Messages postés samedi 3 novembre 2007Date d'inscription 4 février 2016 Dernière intervention - 23 mars 2012 à 17:17 - Dernière réponse : cs_aymen87 109 Messages postés samedi 3 novembre 2007Date d'inscription 4 février 2016 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cptpingu 3827 Messages postés dimanche 12 décembre 2004Date d'inscription 6 octobre 2018 Dernière intervention - 23 mars 2012 à 17:41
3
Merci
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

Merci cptpingu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cptpingu
Meilleure réponse
cs_aymen87 109 Messages postés samedi 3 novembre 2007Date d'inscription 4 février 2016 Dernière intervention - 26 mars 2012 à 16:53
3
Merci
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 !!!

Merci cs_aymen87 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_aymen87
Meilleure réponse
cs_aymen87 109 Messages postés samedi 3 novembre 2007Date d'inscription 4 février 2016 Dernière intervention - 27 mars 2012 à 11:46
3
Merci
Ennnnnnnnnfin ca compile, il manquait un #include "monfichier.nsmap" dans le fichier stdsoap2.cpp

Merci cs_aymen87 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_aymen87
cs_aymen87 109 Messages postés samedi 3 novembre 2007Date d'inscription 4 février 2016 Dernière intervention - 23 mars 2012 à 23:56
0
Merci
Merci pour la réponse :)) c'est l'effet fin de semaine
Commenter la réponse de cs_aymen87
cptpingu 3827 Messages postés dimanche 12 décembre 2004Date d'inscription 6 octobre 2018 Dernière intervention - 26 mars 2012 à 17:22
0
Merci
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
Commenter la réponse de cptpingu
cs_aymen87 109 Messages postés samedi 3 novembre 2007Date d'inscription 4 février 2016 Dernière intervention - 26 mars 2012 à 18:15
0
Merci
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)
Commenter la réponse de cs_aymen87
cs_aymen87 109 Messages postés samedi 3 novembre 2007Date d'inscription 4 février 2016 Dernière intervention - 26 mars 2012 à 18:18
0
Merci
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/
Commenter la réponse de cs_aymen87
cs_aymen87 109 Messages postés samedi 3 novembre 2007Date d'inscription 4 février 2016 Dernière intervention - 27 mars 2012 à 11:00
0
Merci
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
Commenter la réponse de cs_aymen87

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.