Bonjour à tous,
Je viens de chercher comment utiliser les connexion internet en C++/MFC.
J'ai donc trouvé des exemples, et j'ai testé ces exemple dans mon programme : Cela fonctionne.
J'ai donc décidé de me créer une classe CInternet afin d'y faire des fonctions/procédures. Le soucis est que depuis que j'ai crée cette classe j'ai des erreurs de links qui semblent être liées à des inclusions croisées, alors que je n'ai pas l'impression d'en avoir.
J'ai passé 1h30 à chercher hier soir , et je ne m'en sors pas
Je voudrais savoir si quelqu'un aurait une idée :
Voici tout d'abord la configuration fonctionnelle de mon sources ( Avant que je fasse ma classe ), ce code étant donc dans la classe de ma boite de dialogue ( oui , ça n'est pas propre, c'était juste pour tester )
Dans ce cas donc, tout fonctionne. IHM et Code sont mélangés, j'ai donc voulu créer ma classe :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #include <initguid.h> #include "connmgr.h" #include <commctrl.h> #define INITGUID #include <connmgr.h> *Ne pas oublier de linker en entrée : cellcore.lib wininet.lib * Si erreur de link : Désactiver les entêtes précompilées du sources void CTestPDADlg::OnBnClickedButton1() { HANDLE phConnection; CONNMGR_CONNECTIONINFO ConnInfo; ZeroMemory(&ConnInfo, sizeof(ConnInfo)); ConnInfo.cbSize = sizeof(ConnInfo); ConnInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET; ConnInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP | CONNMGR_FLAG_PROXY_WAP | CONNMGR_FLAG_PROXY_SOCKS4 | CONNMGR_FLAG_PROXY_SOCKS5; ConnInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE; ConnInfo.guidDestNet = IID_DestNetInternet; ConnInfo.bExclusive = FALSE; ConnInfo.bDisabled = FALSE; //----------check gprs status------------- DWORD dwStatus = 0; ConnMgrConnectionStatus(&phConnection,&dwStatus); if(dwStatus!=CONNMGR_STATUS_CONNECTED) { AfxMessageBox(L"disconnected",0,0); } //------------------------- HRESULT hResult = ConnMgrEstablishConnectionSync(&ConnInfo, &phConnection, 10*1000, &dwStatus ); //----------check gprs status------------- ConnMgrConnectionStatus(&phConnection,&dwStatus); if(dwStatus==CONNMGR_STATUS_CONNECTED) { AfxMessageBox(L"connected",0,0); } }
Internet.h
internet.cpp
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 #include <initguid.h> #include "connmgr.h" #include <commctrl.h> #define INITGUID #include <connmgr.h> #pragma once class CInternet { private : HANDLE m_phConnection; CONNMGR_CONNECTIONINFO m_ConnInfo; DWORD m_dwStatus; public: CInternet(void); ~CInternet(void); bool Connect(); void Disconnect(); bool IsConnected(); };
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 #include "StdAfx.h" #include "Internet.h" CInternet::CInternet(void) { ZeroMemory(&m_ConnInfo, sizeof(m_ConnInfo)); m_ConnInfo.cbSize = sizeof(m_ConnInfo); m_ConnInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET; m_ConnInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP | CONNMGR_FLAG_PROXY_WAP | CONNMGR_FLAG_PROXY_SOCKS4 | CONNMGR_FLAG_PROXY_SOCKS5; m_ConnInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE; m_ConnInfo.guidDestNet = IID_DestNetInternet; m_ConnInfo.bExclusive = FALSE; m_ConnInfo.bDisabled = FALSE; m_dwStatus = 0; } CInternet::~CInternet(void) { } bool CInternet::Connect() { HRESULT hResult = ConnMgrEstablishConnectionSync(&m_ConnInfo, &m_phConnection, 10*1000, &m_dwStatus ); ConnMgrConnectionStatus(&m_phConnection,&m_dwStatus); if(m_dwStatus==CONNMGR_STATUS_CONNECTED) { return true; } else { return false; } } void CInternet::Disconnect() { ConnMgrReleaseConnection(m_phConnection,true); } bool CInternet::IsConnected() { ConnMgrConnectionStatus(&m_phConnection,&m_dwStatus); if(m_dwStatus=CONNMGR_STATUS_CONNECTED) { return true; } else { return false; } }
Jusque la tout se compile sans problème , ma classe me parait donc bonne.
Le problème : Je vais dans la classe de ma boite de dialogue, je fais un
Je compile, et là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include "internet.h"
C'est donc lors de la déclaration du .h que j'ai un soucisErreur 1 error LNK2005: IID_DestNetInternet déjà défini(e) dans Dialog1Dlg.obj Internet.obj TestPDA
Erreur 2 error LNK2005: IID_DestNetCorp déjà défini(e) dans Dialog1Dlg.obj
Erreur 3 error LNK2005: IID_DestNetWAP déjà défini(e) dans Dialog1Dlg.obj
Erreur 4 error LNK2005: IID_DestNetSecureWAP déjà défini(e) dans Dialog1Dlg.obj
Erreur 5 fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
Je ne vois vraiment pas d'ou cela vient.
Je vous remercie tous d'avance de l'attention que vous porterez à ce message,
Bien cordialement,
Nixeus
Partager