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 )

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);
	}
 
}
Dans ce cas donc, tout fonctionne. IHM et Code sont mélangés, j'ai donc voulu créer ma classe :

Internet.h
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();
 
};
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
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à :
Erreur 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
C'est donc lors de la déclaration du .h que j'ai un soucis

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