Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1072 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Cient soap en C

n°1310830
LePhasme
Les Belges domineront le monde
Posté le 21-02-2006 à 16:44:33  profilanswer
 

Reprise du message précédent :
toi t'as pas été voir le lien que je t'ai donné pour la compilation :p

mood
Publicité
Posté le 21-02-2006 à 16:44:33  profilanswer
 

n°1310848
Vilo5
Posté le 21-02-2006 à 17:02:38  profilanswer
 

Oups  :( , je me suis fait prendre en flagrant délit.  lol
 
Non réellement, je l'ai regardé et je l'ai même au format pdf sur ma machine, mais j'avoue ne pas avoir tout lu et sa taille me fait peur. En fait j'ai pas compris des masses de chose dessus il est tellement volumineux que je ne sais pas par ou commencer j'avoue. De plus je suis un peu faché avec l'anglais, chose très grave à mon niveau, je le sais et je devrai avoir honte car l'anglais est très important.
 
J'ai quand même regarder tu passe bcp de temps a me répondre pour m'aider, la moindre des choses et de regarder tout ce que tu me donne comme info.  
Et je t'en remercie.
 :jap:

n°1310883
LePhasme
Les Belges domineront le monde
Posté le 21-02-2006 à 17:33:55  profilanswer
 

g++ -o myclient test.cpp  soapC.cpp soapClient.cpp -I /usr/local/include/ ( remplace test.cpp par le nom sous lequel tu as enregistré le fichier .cpp du client )
 
g++ -o myserver test.cpp  soapC.cpp soapServer.cpp ( même chose pour le server ( attention le dernier fichier à changé... ) )  

n°1311197
Vilo5
Posté le 22-02-2006 à 09:50:44  profilanswer
 

Bon c'est rageant mais ca marche pas :
 
J'ai biensur essayé :
g++ -o myclient client.cpp  soapC.cpp soapClient.cpp -I /usr/local/include/
 
mais ca ausi :
g++ -o myclient client.cpp  soapC.cpp soapClient.cpp
g++ -o myclient client.cpp  soapC.cpp soapClient.cpp -lsocket -lxnet -lnsl
g++ -o myclient client.cpp  soapC.cpp soapClient.cpp -lsocket -lxnet -lnsl -I /usr/local/include/
g++ -o myclient client.cpp stdsoap.cpp soapC.cpp soapClient.cpp
g++ -o myclient client.c  soapC.cpp soapClient.cpp
...
même avec gcc
 
à chaque fois j'ai des erreurs je ne comprend pas
 
Je rapelle que je bosse sur un linux debian et toi ?
 
voilà l'erreur que j'obtiens quand je fait :
g++ -o myclient client.cpp  soapC.cpp soapClient.cpp -I /usr/local/include/

Code :
  1. /tmp/cc1szAX4.o(.text+0x72): In function `main':
  2. : undefined reference to `soap_init'
  3. /tmp/cc1szAX4.o(.text+0xbd): In function `main':
  4. : undefined reference to `soap_delete'
  5. /tmp/cc1szAX4.o(.text+0xcb): In function `main':
  6. : undefined reference to `soap_end'
  7. /tmp/cc1szAX4.o(.text+0xd9): In function `main':
  8. : undefined reference to `soap_done'
  9. /tmp/ccZ69c7c.o(.text+0x115): In function `soap_fault':
  10. : undefined reference to `soap_malloc'
  11. /tmp/ccZ69c7c.o(.text+0x167): In function `soap_fault':
  12. : undefined reference to `soap_malloc'
  13. /tmp/ccZ69c7c.o(.text+0x30e): In function `soap_faultdetail':
  14. : undefined reference to `soap_malloc'
  15. /tmp/ccZ69c7c.o(.text+0x36b): In function `soap_faultdetail':
  16. : undefined reference to `soap_malloc'
  17. /tmp/ccZ69c7c.o(.text+0x421): In function `soap_getelement(soap*, int*)':
  18. : undefined reference to `soap_peek_element'
  19. /tmp/ccZ69c7c.o(.text+0x455): In function `soap_getelement(soap*, int*)':
  20. .
  21. .
  22. .
  23. /tmp/ccwcqk3a.o(.text+0x493): In function `soap_call_cb__multiply(soap*, char const*, char const*, int, int, int*)':
  24. : undefined reference to `soap_closesock'
  25. /tmp/ccwcqk3a.o(.text+0x4f0): In function `soap_call_cb__multiply(soap*, char const*, char const*, int, int, int*)':
  26. : undefined reference to `soap_recv_fault'
  27. /tmp/ccwcqk3a.o(.text+0x503): In function `soap_call_cb__multiply(soap*, char const*, char const*, int, int, int*)':
  28. : undefined reference to `soap_closesock'
  29. /tmp/ccwcqk3a.o(.text+0x513): In function `soap_call_cb__multiply(soap*, char const*, char const*, int, int, int*)':
  30. : undefined reference to `soap_body_end_in'
  31. /tmp/ccwcqk3a.o(.text+0x522): In function `soap_call_cb__multiply(soap*, char const*, char const*, int, int, int*)':
  32. : undefined reference to `soap_envelope_end_in'
  33. /tmp/ccwcqk3a.o(.text+0x540): In function `soap_call_cb__multiply(soap*, char const*, char const*, int, int, int*)':
  34. : undefined reference to `soap_end_recv'
  35. /tmp/ccwcqk3a.o(.text+0x551): In function `soap_call_cb__multiply(soap*, char const*, char const*, int, int, int*)':
  36. : undefined reference to `soap_closesock'
  37. /tmp/ccwcqk3a.o(.text+0x57b): In function `soap_call_cb__multiply(soap*, char const*, char const*, int, int, int*)':
  38. : undefined reference to `soap_closesock'
  39. collect2: ld a retourné 1 code d'état d'exécution


 
J'ai sauté beaucoup d eligne d'erreur car c'ést bien trop long.


Message édité par Vilo5 le 22-02-2006 à 09:53:27
n°1311212
Vilo5
Posté le 22-02-2006 à 10:06:57  profilanswer
 

Il y a peut être une méthode de travail que je n'utilise pas.
 
J'ai tout mis dans un répertoire appellé "test_soap" dans mon home :
 
- J'ai d'abord créer le .h  (le même que le tiens que j'ai appellé test.h, enfin en changeant l'ip et le port tout de même)
- je l'ai compilé : soapcpp2 test.h   ( ca ma créé plein de fichier dans le répertoire "test_soap" du home)
- ensuite j'ai créer le fichier client.cpp qui contient le code de ton client sauf ip
- puis j'ai créer le fichier serveur.cpp qui contient le code de ton serveur sauf ip (les 2 tjs dans le rep "test_soap" )
- puis j'ai essayé de compiler le client :
g++ -o myclient client.cpp  soapC.cpp soapClient.cpp -I /usr/local/include/  
 
Voilà ma démarche !


Message édité par Vilo5 le 22-02-2006 à 10:11:06
n°1311263
LePhasme
Les Belges domineront le monde
Posté le 22-02-2006 à 11:06:12  profilanswer
 

On va essayer autrement, tu vas créer un répertoire pour le serveur et un pour le client.
Dans le répertoire client tu mets le fichier .h et le fichier client.cpp, tu appliques soapcpp2 sur le fichier .h et ensuite pour compiler voici un Makefile

Code :
  1. GCC=g++
  2. CFLAGS = -I /usr/local/include/
  3. LIBS = -lgsoap++
  4. OBJECT = client.o soapC.o soapClient.o
  5. DEBUG = -g -ggdb -DDEBUG
  6. client : $(OBJECT)
  7. $(GCC) -o $@ $(OBJECT) $(LIBS)
  8. clean :
  9. rm -f *.o; rm -f server
  10. %.o : %.cpp
  11. $(GCC) $(DEBUG) -c -o $@ $< $(CFLAGS)


Enregistre ce code dans un fichier qui portera le nom Makefile et que tu places aussi dans le repertoire client.
Ensuite simplement en entrant la commande make, il devrait tout te compiler
pour le serveur même chose ( n'oublie pas le soapcpp2 ) avec ce fichier Makefile :

Code :
  1. GCC=g++
  2. CFLAGS = -I /usr/local/include/
  3. LIBS = -lgsoap++
  4. OBJECT = serveur.o soapC.o soapServer.o
  5. DEBUG = -g -ggdb -DDEBUG
  6. HardwareManager : $(OBJECT)
  7. $(GCC) -o $@ $(OBJECT) $(LIBS)
  8. clean :
  9. rm -f *.o; rm -f server
  10. %.o : %.cpp
  11. $(GCC) $(DEBUG) -c -o $@ $< $(CFLAGS)


 
PS : moi aussi je suis sous debian.


Message édité par LePhasme le 22-02-2006 à 11:47:56
n°1311267
Vilo5
Posté le 22-02-2006 à 11:08:50  profilanswer
 

Pour info j'ai trouvé ce lien qui parle de soap dans tout les langages (C, PHP, JAVA, ...) et donc de gsoap, nusoap, wsdl, ...:  
 
http://users.skynet.be/pascalbotte [...] /book1.htm

n°1311297
LePhasme
Les Belges domineront le monde
Posté le 22-02-2006 à 11:29:27  profilanswer
 

Oui je connais ce site ca nous a aidé pour rendre notre client php utilisable avec notre serveur C++

n°1311309
Vilo5
Posté le 22-02-2006 à 11:36:19  profilanswer
 

Bon alors pourquoi pas, pas bête !
 
J'ai donc tester en faisant un make et voilà le résultat :

Code :
  1. debian-JL:/home/olivier/test_soap/serveur# soapcpp2 test.h
  2. **  The gSOAP Stub and Skeleton Compiler for C and C++ 2.7.0d
  3. **  Copyright (C) 2001-2004 Robert van Engelen, Genivia, Inc.
  4. **  All Rights Reserved. This product is provided "as is", without any warranty.
  5. **WARNING**: unrecognized gsoap directive: 'definitions: combus
  6. ' (detected at line 4 in test.h)
  7. Saving soapStub.h
  8. Saving soapH.h
  9. Saving soapC.cpp
  10. Saving soapClient.cpp
  11. Saving soapServer.cpp
  12. Saving soapClientLib.cpp
  13. Saving soapServerLib.cpp
  14. Using cb service name: combus
  15. Using cb service style: document
  16. Using cb service encoding: literal
  17. Using cb service location: http://10.57.70.2:9010
  18. Using cb schema namespace: urn:combus
  19. Saving combus.wsdl Web Service description
  20. Saving soapcombusProxy.h client proxy
  21. Saving soapcombusObject.h server object
  22. Saving combus.add.req.xml sample SOAP/XML request
  23. Saving combus.add.res.xml sample SOAP/XML response
  24. Saving combus.multiply.req.xml sample SOAP/XML request
  25. Saving combus.multiply.res.xml sample SOAP/XML response
  26. Saving combus.nsmap namespace mapping table
  27. Saving cb.xsd XML schema
  28. Compilation successful (1 warning)
  29. debian-JL:/home/olivier/test_soap/serveur# ls
  30. cb.xsd              combus.multiply.req.xml  combus.wsdl  soapC.cpp          soapcombusObject.h  soapServer.cpp     test.h
  31. combus.add.req.xml  combus.multiply.res.xml  Makefile     soapClient.cpp     soapcombusProxy.h   soapServerLib.cpp
  32. combus.add.res.xml  combus.nsmap             serveur.cpp  soapClientLib.cpp  soapH.h             soapStub.h
  33. debian-JL:/home/olivier/test_soap/serveur# make
  34. Makefile:8: *** séparateur manquant . Arrêt.

:fou:  :fou:  
 
Et j'obtiens bien évidement exactement la même chose avec le client.
 
J'ai bien fait 2 répertoire, ils ont chacun leur test.h, client.cpp ou serveur.cpp et makefile.
J'ai refait un soapcpp2 test.h puis un make pour les 2.
 
Voilà voilà !
je ne sais vraiment pas quoi remettre en cause dans la démarche.
Il me reste une possibilité mettre le PC par la fenêtre.  :D
 
Ta quel version de gcc ?  gcc -dumpversion
Moi j'ai la 3.3.5 sur un KDE 3.3.2, noyau linux 2.4.18-bf2.4 et gsoap 2.7.6d

Message cité 1 fois
Message édité par Vilo5 le 22-02-2006 à 11:38:29
n°1311328
LePhasme
Les Belges domineront le monde
Posté le 22-02-2006 à 11:49:49  profilanswer
 

J'ai gcc 3.2.3 et kde 3.5 sous linux 2.4.18 seulement t'es pas avec gsoap 2.7.6.d

Vilo5 a écrit :


**  The gSOAP Stub and Skeleton Compiler for C and C++ 2.7.0d


Message édité par LePhasme le 22-02-2006 à 11:51:06
mood
Publicité
Posté le 22-02-2006 à 11:49:49  profilanswer
 

n°1311437
Vilo5
Posté le 22-02-2006 à 14:04:22  profilanswer
 

Bon alors effectivement ca marque 2.7.0d, je ne comprend pas pourquoi car j'ai bien télécharger le tar.gz du 2.7.6.
 
je viens de refaire son installation pour être bien sure :

Code :
  1. tar xzf gsoap_2.7.6d.tar.gz
  2. ./configure
  3. make
  4. make install


Pendant l'install il me marque bien 2.7.6d mais une fois l'install terminer quand je fait soapcpp2 ca me met tjs 2.7.0d.
 
Enfin bref vu que j'ai réinstaller le tout j'ai réessayer de recompiler mon client et mon serveur sans le make juste avec g++ et miracle ca a changé

Code :
  1. olivier@debian-JL:~/test_soap/client$ g++ -o myclient client.cpp soapC.cpp soapClient.cpp -I /usr/local/include/
  2. In file included from soapH.h:10,
  3.                  from client.cpp:1:
  4. soapStub.h:23: error: le C++ ISO interdit la déclaration de «
  5.    SOAP_BEGIN_NAMESPACE » sans type
  6. soapStub.h: Dans function « int SOAP_BEGIN_NAMESPACE(soap) »:
  7. soapStub.h:23: error: erreur d'analyse syntaxique before `{' token
  8. soapStub.h:50: error: declaration of `struct SOAP_ENV__Header' in `int
  9.    SOAP_BEGIN_NAMESPACE(soap)' which does not enclose `::'
  10. soapStub.h:50: embrouillé par les erreurs précédentes, abandon
  11. In file included from soapH.h:10,
  12.                  from soapC.cpp:8:
  13. soapStub.h:23: error: le C++ ISO interdit la déclaration de «
  14.    SOAP_BEGIN_NAMESPACE » sans type
  15. soapStub.h: Dans function « int SOAP_BEGIN_NAMESPACE(soap) »:
  16. soapStub.h:23: error: erreur d'analyse syntaxique before `{' token
  17. soapStub.h:50: error: declaration of `struct SOAP_ENV__Header' in `int
  18.    SOAP_BEGIN_NAMESPACE(soap)' which does not enclose `::'
  19. soapStub.h:50: embrouillé par les erreurs précédentes, abandon
  20. In file included from soapH.h:10,
  21.                  from soapClient.cpp:8:
  22. soapStub.h:23: error: le C++ ISO interdit la déclaration de «
  23.    SOAP_BEGIN_NAMESPACE » sans type
  24. soapStub.h: Dans function « int SOAP_BEGIN_NAMESPACE(soap) »:
  25. soapStub.h:23: error: erreur d'analyse syntaxique before `{' token
  26. soapStub.h:50: error: declaration of `struct SOAP_ENV__Header' in `int
  27.    SOAP_BEGIN_NAMESPACE(soap)' which does not enclose `::'
  28. soapStub.h:50: embrouillé par les erreurs précédentes, abandon


Seul bémole maintenant j'ai un pb avec le namespace.
 
Une idée ?

n°1311510
Vilo5
Posté le 22-02-2006 à 14:46:28  profilanswer
 

je viens d'essayer avec un autre exemple trouvé sur le net :
- un autre .h
- un client.c
- un serveur.c
 
Quand je fait le soapcpp2 sur le h j'ai un warning sur le namespace comme avec le tient sur le combus.
Et quand je compile le client.c j'ai exactement la même erreur sur le :

Code :
  1. error: le C++ ISO interdit la déclaration de «
  2.    SOAP_BEGIN_NAMESPACE » sans type
  3. soapStub.h: Dans function « int SOAP_BEGIN_NAMESPACE(soap) »:
  4. ...


 
Donc a mon avis l'erreur viend déjà du namespace dans le .h mais je comprend pas.


Message édité par Vilo5 le 22-02-2006 à 14:47:11
n°1311512
LePhasme
Les Belges domineront le monde
Posté le 22-02-2006 à 14:50:04  profilanswer
 

Aucune pour ca, mais par contre à mon avis on a réellement pas la même version parce que moi quand j'applique le soapcpp2 sur le fichier .h ( après avoir viré les numéros de lignes et autres espaces inutiles du copier/coller ) je n'ai pas un seul warning.

n°1311525
Vilo5
Posté le 22-02-2006 à 15:01:19  profilanswer
 

LePhasme a écrit :

Aucune pour ca, mais par contre à mon avis on a réellement pas la même version parce que moi quand j'applique le soapcpp2 sur le fichier .h ( après avoir viré les numéros de lignes et autres espaces inutiles du copier/coller ) je n'ai pas un seul warning.


 
Bon pour la version je sais pas et je comprend pas pourquoi ca me met 2.7.0d.
 
Pour le copier coller, t'inquiètes pas j'ai bien enlever les numéros de ligne et espaces inutiles.
 
Pour info il y a un moyen beaucoup plus simple pour faire le copier/coller sans les numéros de lignes :
tu double click rapidement dans le code et les numéro de ligne disparaise. Cool non ?
Maintenant tu peut faire un copier/coller sans té préocuper des numéros d eligne puisqu'il ne sont plus là.
 
Voilà j'éspère t'avoir apris quelque chose, avec tout ce que toi tu ma déjà dit.

n°1311527
Vilo5
Posté le 22-02-2006 à 15:03:03  profilanswer
 

Pour les versions je peus toujours essayer de réinstaller gsoap encore une fois si tu me donne :
- la démarche pour désinstaller proprement le gsoap actuel
- puis le lien du site sur lequel ta récupérer ta version de manière à être sur que j'install bien exactement la même que toi.


Message édité par Vilo5 le 22-02-2006 à 15:04:02
n°1311549
LePhasme
Les Belges domineront le monde
Posté le 22-02-2006 à 15:21:41  profilanswer
 

Pour moi la procédure est bonne, et pour le fichier j'ai mis sur un ftp celui que j'utilise ici

n°1311556
LePhasme
Les Belges domineront le monde
Posté le 22-02-2006 à 15:27:16  profilanswer
 

Fait peut-être un make uninstall avant.

n°1311560
Vilo5
Posté le 22-02-2006 à 15:31:26  profilanswer
 

Déjà fait !
 
Ca change rien.
Make uninstall
Make clean

n°1311563
Vilo5
Posté le 22-02-2006 à 15:34:18  profilanswer
 

Merci pour le lien sur ftp.
 
Pourrait tu me mettre aussi un tag.gz ou autre evec ton fichiers .h et ton client.cpp et serveur.cpp.
Comme ca je serais certain d'avoir vraiment les mêmes fichiers et ca évite toutes possibilité d'erreurs.
 
merci d'avance


Message édité par Vilo5 le 22-02-2006 à 15:35:02
n°1311574
LePhasme
Les Belges domineront le monde
Posté le 22-02-2006 à 15:45:49  profilanswer
 

ha oui et j'ai fait un ./configure --enable-debug mais je doute que ca change quelque chose...

n°1311638
Vilo5
Posté le 22-02-2006 à 16:38:20  profilanswer
 

Je suis vraiment dégouté quand ca veu pas va veu pas.
 
En plus je finis mon projet à la fin de la semaine, après je retourne 3 semaines à la fac avant de revenir pour 5 mois en stage et continuer ce projet. Je fais une formation dans laquel on effectue d'abord 3 x 3 semaines de projet en entreprise en alternance avec les cours à la fac (en ce moment je suis dans la dernière periode de 3 semaines), puis après cela on repart en entreprise pour 5 mois de stage. Dans mon cas le sujet du projet et du stage et le même, c'est la continuité.
 
J'aurai bien aimé réussir à faire un webservice avec soap avant la fin de mon projet vendredi afin de pouvoir présenter ca dans mon rapport et faire une bonne soutenance.

n°1311781
LePhasme
Les Belges domineront le monde
Posté le 22-02-2006 à 19:44:43  profilanswer
 

J'ai pas su t'envoyer ca aujourd'hui , j'ai eu des problèmes aussi de mon coté pour l'intégration d'un client dans le serveur...
Le problème c'est que normalement je vais plus en entreprise avant lundi...
Mais je vais voir si je saurais pas passer demain la bas, je comptais m'envoyer les fichiers pour bosser chez moi donc au passage je t'enverrais ca.

n°1311955
Vilo5
Posté le 23-02-2006 à 08:48:10  profilanswer
 

LePhasme a écrit :

J'ai pas su t'envoyer ca aujourd'hui , j'ai eu des problèmes aussi de mon coté pour l'intégration d'un client dans le serveur...
Le problème c'est que normalement je vais plus en entreprise avant lundi...
Mais je vais voir si je saurais pas passer demain la bas, je comptais m'envoyer les fichiers pour bosser chez moi donc au passage je t'enverrais ca.


 
Ok merci c'est sympa !
Mais fais comme tu peus, je vais pas non plus trop abusé tout de même.
Si tu peut c'est très bien, sinon bein tampis.

n°1312652
LePhasme
Les Belges domineront le monde
Posté le 23-02-2006 à 21:13:55  profilanswer
 
n°1312829
Vilo5
Posté le 24-02-2006 à 09:12:54  profilanswer
 


 
Ok, merci !
J'ai répondu  ;)


Message édité par Vilo5 le 24-02-2006 à 09:37:10
n°1328850
Vilo5
Posté le 20-03-2006 à 15:17:09  profilanswer
 

Bon alors pendant mon abscance j'ai essayer de tester gsoap sur une mandriva.
Mais pas moyen ca block déjà à l'install  :sweat:, doit certainement falloir que je cherche un autre package gsoap qui fonctionne sous mandriva.

n°1329531
Vilo5
Posté le 21-03-2006 à 15:10:13  profilanswer
 

Ca avance doucement, j'ai installer la version 2.7.6e. Comme d'ab quand je lance "soapccp2" il m'indique toujours que j'ai la version 2.7.0d au lieu de la 2.7.6.e.
 
Par contre quand je tappe :

Code :
  1. /home/olivier/gsoap-2.7/soapcpp2/src/soapcpp2

là il m'indique bien que j'ai la version 2.7.6d.
 
Ce qui a pour effet lorsque je tappe cette commande au lieu de la commande "soapcpp2" que je n'ai plus l'erreur de compilation sur le .h que j'avais avant. A savoir l'erreur suivante :

Code :
  1. **WARNING**: unrecognized gsoap directive: 'definitions: combus
  2. #
  3. ' (detected at line 4 in test.h)


Par contre je n'arrive toujours pas a compiler les .cpp client et serveur avec g++. Il me renvoie toujours les même erreurs.
 
 
Pour la compilation du .h avec "soapcpp2" c'est tout de même bizarre. Ca veut dire que j'ai 2 version de gsoap qui sont installées la 2.7.0d et la 2.7.6e. Quand je lance soapcpp2 sans spécifier le chemin du fichier soapcpp2.h il lance par défaut la version 2.7.0d et si je spécifie le chemin de soapcpp2.h il me lance bien la version 2.7.6e.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Comment générer des dates compatibles SOAPtransfert d'image via soap wsdl
Soap et https[Webservice/PHP] Modification d'une fonction soap
Java Soap[WebServices/SOAP] Serveur php NuSOAP / Client JAVA/JSP
Accès serveur protocole SOAP & web servicesserveur SOAP
[PHP] problème pour echanger des donnees avec un serveur SOAP[SOAP::Lite] et HashMap
Plus de sujets relatifs à : Cient soap en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR