p'ti prog qui se connect a un serveur ftp marche pas

p'ti prog qui se connect a un serveur ftp marche pas - C++ - Programmation

Marsh Posté le 10-07-2004 à 11:07:12    

voila, j'essai de faire une connection a un serveur ftp mais je ne vois pas pourquoi ca ne marche pas, apparement c'est un probleme de linkage avec une librairie mais je ne sais pas comment faire, j'ai cherché mais...
 

Code :
  1. #include<iostream.h>
  2. #include <afxinet.h>
  3. int main(void){
  4. CInternetSession session("ma session" );
  5. CFtpConnection* pConn = NULL;
  6. pConn = session.GetFtpConnection("ftpperso.free.fr","monlogin","mdp",21);
  7. if(!pConn->CreateDirectory("test_de_c++" )){
  8. cout<<"le le dossier ne s'est pas créé..."<<endl;
  9. }
  10. delete pConn;
  11. session.Close();
  12. return 0;
  13. }

la compilation : 0 erreurs, et c'est au build qu'il chit [:spamafote]


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 10-07-2004 à 11:07:12   

Reply

Marsh Posté le 10-07-2004 à 11:20:02    

mmmh tu es sûr d'avoir branché correctement ton cable réseau ?
 
non, je rigole  :D  
 
Essaie peut-être ça, c'est un code que j'ai piqué d'un bouquin, mais je n'ai pas eu l'occasion de le tester  :pfff:  
Apparemment il y a un peu de MFC, mais au premier coup d'oeil c'est tout à fait possible de l'enlever, et ça ne devrait pas poser de problème.

Code :
  1. // Initialisation de WinInet et connexion sur le fournisseur d'accès
  2.   CInternetSession session(_T("FTPConnect" ), 1, INTERNET_OPEN_TYPE_PRECONFIG);
  3.   CFtpConnection* pServer = NULL;
  4.   try
  5.   {
  6.     UpdateData(TRUE);
  7.     pszURL = m_Adresse;
  8.     if (!AfxParseURL(pszURL,dwServiceType,NomServeur,strObject,nPort))
  9.     {
  10.       MessageBox("Mauvais URL" );
  11.     }
  12.     // Définition d'un objet CFtpConnexion
  13.     pServer = session.GetFtpConnection(NomServeur);
  14.    
  15.     // Recherche du site
  16.     CString disque = m_Fichier;
  17.     if (!pServer->GetFile(m_Fichier, disque)) {
  18.       MessageBox("Fichier introuvable" );
  19.     }
  20.     pServer->Close();
  21.     delete pServer;
  22.   }
  23.   catch (CInternetException* pEx)
  24.   {
  25.     // Récupération des erreurs WinInet
  26.     TCHAR s[1024];
  27.     pEx -> GetErrorMessage(s,1024);
  28.     TRACE1("Erreur : ", s);
  29.     pEx->Delete();
  30.   }


Message édité par m0rbac le 10-07-2004 à 11:21:23
Reply

Marsh Posté le 10-07-2004 à 22:01:14    

Si c'est une erreur d'édition des liens, il faudrait peut-être mettre le message d'erreur ? (+ le compilo)
 
A vue d'organe olfactif, le problème semble être lié à l'absence des libs de MFC (dont CFtpConnection fait partie).

Reply

Marsh Posté le 11-07-2004 à 00:03:33    

tyrion42 a écrit :

Si c'est une erreur d'édition des liens, il faudrait peut-être mettre le message d'erreur ? (+ le compilo)
 
A vue d'organe olfactif, le problème semble être lié à l'absence des libs de MFC (dont CFtpConnection fait partie).

ouais c'est ca mais je ne sais pas comment appeller la lib MFC [:spamafote]


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 11-07-2004 à 11:17:27    

Essaie de modifier les settings de compilation et d'utiliser le mode "Multithreaded" ou "Multithreaded DLL".

Reply

Marsh Posté le 11-07-2004 à 22:48:37    

m0rbac a écrit :

Essaie de modifier les settings de compilation et d'utiliser le mode "Multithreaded" ou "Multithreaded DLL".

:heink: j'vois comment faire, et ce que ca va changer??? je vais tester...


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-07-2004 à 17:12:15    

alors personne peu m'expliquer comment linker avec la bonne lib?


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 16-07-2004 à 16:45:20    

Normalement lorsque tu crées un projet sous VisualC avec le "MFC AppWizard (exe)", tu as des options qui te permettent de choisir comment linker la lib MFC. Tu peux aussi spécifier si tu veux utiliser la WinSock.
Je ne sais pas comment tu as créé le projet, mais si tu ne l'as pas fait comme ça, essaie de recréer un nouveau projet et d'y placer tes sources.

Reply

Marsh Posté le 16-07-2004 à 17:50:06    

justement je ne veux pas creer un projet MFC Wizard, ce que je veux c'est juste utiliser les librairie dans une console application. Sinon pour la winsock, j'ai cherché mais je ne trouve rien qui explique comment l'utiliser pour etablir une connexion avec un serveur ftp [:w3c compliant], la pluspart des liens c'est pour faire des trucs qui ne m'interessent pas.


Message édité par neg'gwada le 16-07-2004 à 17:51:14

---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 17-07-2004 à 13:52:33    

:sweat: maintenant j'essai d'utiliser la librairie Wininet.h, mais meme si je n'est rien dans mon main ca me met un message d'erreur dès la compilation de :

Code :
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <Wininet.h>
  4. void main()
  5. {
  6. }


ca me dit:

Compiling...
main.cpp
c:\program files\microsoft visual studio\vc98\include\wininet.h(48) : error C2146: syntax error : missing ';' before identifier 'HINTERNET'
c:\program files\microsoft visual studio\vc98\include\wininet.h(48) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
 
main.obj - 2 error(s), 0 warning(s)

donc c'est a priorie une erreur qui vient du fichié wininet.h, mais ca me surprant quant meme.... je dois avoir un probleme de conception ou d'approche sur l'utilisation de certaines librairies :'(  
quelqu'un peu m'aider?


Message édité par neg'gwada le 17-07-2004 à 13:54:44

---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 17-07-2004 à 13:52:33   

Reply

Marsh Posté le 17-07-2004 à 14:20:03    

En général j'obtient ce message quand j'utilise les MFC. Pour le corriger, il me suffit d'ajouter un include au début du fichier. Essaie donc d'ajouter ça:

#include "stdafx.h"


... pour autant que le fichier existe
Chez moi, le stdafx.h est défini ainsi:

Code :
  1. // stdafx.h : include file for standard system include files,
  2. //  or project specific include files that are used frequently, but
  3. //      are changed infrequently
  4. //
  5. #if !defined(AFX_STDAFX_H__8456DF7E_B0F6_4E0F_B04D_2A43F019E369__INCLUDED_)
  6. #define AFX_STDAFX_H__8456DF7E_B0F6_4E0F_B04D_2A43F019E369__INCLUDED_
  7. #if _MSC_VER > 1000
  8. #pragma once
  9. #endif // _MSC_VER > 1000
  10. #define VC_EXTRALEAN  // Exclude rarely-used stuff from Windows headers
  11. #include <afxwin.h>         // MFC core and standard components
  12. #include <afxext.h>         // MFC extensions
  13. #include <afxdisp.h>        // MFC Automation classes
  14. #include <afxdtctl.h>       // MFC support for Internet Explorer 4 Common Controls
  15. #ifndef _AFX_NO_AFXCMN_SUPPORT
  16. #include <afxcmn.h>        // MFC support for Windows Common Controls
  17. #endif // _AFX_NO_AFXCMN_SUPPORT
  18. //{{AFX_INSERT_LOCATION}}
  19. // Microsoft Visual C++ will insert additional declarations
  20. // immediately before the previous line.
  21. #endif // !defined(AFX_STDAFX_H__8456DF7E_B0F6_4E0F_B04D_2A43F019E369__INCLUDED_)

Reply

Marsh Posté le 17-07-2004 à 14:34:00    

ben ca change en:

c:\program files\microsoft visual studio\vc98\include\stdafx.h(46) : fatal error C1083: Cannot open include file: 'afxdhtml.h': No such file or directory
Error executing cl.exe.

[:spamafote] ca me decourage de plus en plus, car je ne veux absolument pas creer de projet MFC.... [:w3c compliant]


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 17-07-2004 à 18:32:32    

neg'gwada a écrit :

ben ca change en:

c:\program files\microsoft visual studio\vc98\include\stdafx.h(46) : fatal error C1083: Cannot open include file: 'afxdhtml.h': No such file or directory
Error executing cl.exe.

[:spamafote] ca me decourage de plus en plus, car je ne veux absolument pas creer de projet MFC.... [:w3c compliant]


Et en enlevant la référence à afxdhtml.h ?
 
Non, il ne faut jamais se décourager  :ange: , c'est tellement plus drôle de péter les plombs un bon coup et de lancer son ordi par la fenêtre (n'oublie pas de filmer la scène, merci  :D )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed