LukaKrop
asked on
error LNK2001: unresolved external symbol _CLSID_DccMan????
Hello
I don't know what to do. I tried everything and nothing helps.
I am trying to implement in my app IDccMan and IDccManSkin to get notified if my PDA get connected. Both are part of ActiveSync connection manager.
the included file in my project is
#include "dccole.h"
links form microsoft.com is
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesdkr/html/_wcesdk_IDccMan_IUnknown.asp
thank you very much for your help
I don't know what to do. I tried everything and nothing helps.
I am trying to implement in my app IDccMan and IDccManSkin to get notified if my PDA get connected. Both are part of ActiveSync connection manager.
the included file in my project is
#include "dccole.h"
links form microsoft.com is
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesdkr/html/_wcesdk_IDccMan_IUnknown.asp
thank you very much for your help
ASKER
Yes, but same result
Are you linking with Ole32.lib and/or Uuid.lib? See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcedcom/html/cerefIDccManIUnknown.asp
ASKER
If I use /VERBOSE:LIB switch I see that it uses bot lib files...
Hmm, are you sure you're including the header files like
#define INITGUID
#include <Dccole.h>
#define INITGUID
#include <Dccole.h>
ASKER
I have already tried this but the same 4 link errors
Sorry, that should have been
#define INITGUID
#include <initguid.h>
#include <objbase.h>
#include <Dccole.h>
#define INITGUID
#include <initguid.h>
#include <objbase.h>
#include <Dccole.h>
ASKER
now I have 19 errors
Linking...
DPDA.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
DPDA.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
DPDA.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
DPDADoc.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
DPDADoc.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
DPDADoc.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
DPDAView.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
DPDAView.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
DPDAView.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
MainFrm.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
MainFrm.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
MainFrm.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
MySinkObject.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
MySinkObject.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
MySinkObject.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
Splash.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
Splash.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
Splash.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
Debug/DPDA.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
DPDA.exe - 19 error(s), 0 warning(s)
Linking...
DPDA.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
DPDA.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
DPDA.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
DPDADoc.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
DPDADoc.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
DPDADoc.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
DPDAView.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
DPDAView.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
DPDAView.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
MainFrm.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
MainFrm.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
MainFrm.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
MySinkObject.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
MySinkObject.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
MySinkObject.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
Splash.obj : error LNK2005: _CLSID_DccMan already defined in ChildFrm.obj
Splash.obj : error LNK2005: _IID_IDccMan already defined in ChildFrm.obj
Splash.obj : error LNK2005: _IID_IDccManSink already defined in ChildFrm.obj
Debug/DPDA.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
DPDA.exe - 19 error(s), 0 warning(s)
>>CLSID_DccMan already defined
Aaah, there we have it :o)
Try
#ifndef INITGUID
#define INITGUID
#endif
#include <initguid.h>
#include <objbase.h>
#include <Dccole.h>
Aaah, there we have it :o)
Try
#ifndef INITGUID
#define INITGUID
#endif
#include <initguid.h>
#include <objbase.h>
#include <Dccole.h>
ASKER
I get the same 19 Link errors
let me show you my implementation
OK first my derived code from IDccManSink class
class CMySinkObject : public IDccManSink
{
public:
CMySinkObject();
~CMySinkObject();
// IUnknown methods:
STDMETHODIMP_(DWORD) AddRef(void);
STDMETHODIMP QueryInterface(REFIID riid, void ** ppv);
STDMETHODIMP_(DWORD) Release(void);
// IDccManSink methods;
STDMETHODIMP OnLogAnswered(void);
STDMETHODIMP OnLogActive(void);
STDMETHODIMP OnLogDisconnection(void);
STDMETHODIMP OnLogError(void);
STDMETHODIMP OnLogInactive(void);
STDMETHODIMP OnLogIpAddr(DWORD dwIpAddr);
STDMETHODIMP OnLogListen(void);
STDMETHODIMP OnLogTerminated(void);
private:
DWORD m_dwRefCount;
};
and implementation
#include "stdafx.h"
#include "DPDA.h"
#include "MySinkObject.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
////////////////////////// ////////// ////////// ////////// ////////// ////
// Construction/Destruction
////////////////////////// ////////// ////////// ////////// ////////// ////
CMySinkObject::CMySinkObje ct()
{
}
CMySinkObject::~CMySinkObj ect()
{
}
STDMETHODIMP CMySinkObject::OnLogAnswer ed(void)
{
AfxMessageBox(_T("OnLogAns wered"));
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogActive (void)
{
AfxMessageBox(_T("OnLogAct ive"));
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogDiscon nection(vo id)
{
AfxMessageBox(_T("OnLogDis connection "));
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogError( void)
{
AfxMessageBox(_T("OnLogErr or"));
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogInacti ve(void)
{
AfxMessageBox(_T("OnLogIna ctive"));
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogIpAddr (DWORD dwIpAddr)
{
AfxMessageBox(_T("OnLogIpA ddr"));
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogListen (void)
{
AfxMessageBox(_T("OnLogLis ten"));
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogTermin ated(void)
{
AfxMessageBox(_T("OnLogTer minated")) ;
return NOERROR;
}
STDMETHODIMP_(DWORD) CMySinkObject::AddRef(void )
{
return ++m_dwRefCount;
}
STDMETHODIMP CMySinkObject::QueryInterf ace(REFIID riid, void ** ppv)
{
if( IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IDccManSink))
{
*ppv = (IDccManSink *)this;
}
else
{
*ppv = NULL;
return E_NOINTERFACE;
}
AddRef();
return S_OK;
}
STDMETHODIMP_(DWORD) CMySinkObject::Release(voi d)
{
ULONG ul = m_dwRefCount;
if (!--m_dwRefCount)
delete this;
return ul;
}
in App derived class I added variable members:
DWORD m_hrDccMan;
IDccMan* pDccMan;
HRESULT hr;
CMySinkObject m_mySkin;
in application I add to InitInstance() code:
hr = CoCreateInstance(CLSID_Dcc Man, NULL, CLSCTX_INPROC_SERVER, IID_IDccMan, (LPVOID*) &pDccMan);
pDccMan->Advise((CMySinkOb ject*)&m_m ySkin, &m_hrDccMan);
and in ExitInstance I added:
pDccMan->Unadvise(m_hrDccM an);
let me show you my implementation
OK first my derived code from IDccManSink class
class CMySinkObject : public IDccManSink
{
public:
CMySinkObject();
~CMySinkObject();
// IUnknown methods:
STDMETHODIMP_(DWORD) AddRef(void);
STDMETHODIMP QueryInterface(REFIID riid, void ** ppv);
STDMETHODIMP_(DWORD) Release(void);
// IDccManSink methods;
STDMETHODIMP OnLogAnswered(void);
STDMETHODIMP OnLogActive(void);
STDMETHODIMP OnLogDisconnection(void);
STDMETHODIMP OnLogError(void);
STDMETHODIMP OnLogInactive(void);
STDMETHODIMP OnLogIpAddr(DWORD dwIpAddr);
STDMETHODIMP OnLogListen(void);
STDMETHODIMP OnLogTerminated(void);
private:
DWORD m_dwRefCount;
};
and implementation
#include "stdafx.h"
#include "DPDA.h"
#include "MySinkObject.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////
// Construction/Destruction
//////////////////////////
CMySinkObject::CMySinkObje
{
}
CMySinkObject::~CMySinkObj
{
}
STDMETHODIMP CMySinkObject::OnLogAnswer
{
AfxMessageBox(_T("OnLogAns
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogActive
{
AfxMessageBox(_T("OnLogAct
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogDiscon
{
AfxMessageBox(_T("OnLogDis
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogError(
{
AfxMessageBox(_T("OnLogErr
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogInacti
{
AfxMessageBox(_T("OnLogIna
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogIpAddr
{
AfxMessageBox(_T("OnLogIpA
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogListen
{
AfxMessageBox(_T("OnLogLis
return NOERROR;
}
STDMETHODIMP CMySinkObject::OnLogTermin
{
AfxMessageBox(_T("OnLogTer
return NOERROR;
}
STDMETHODIMP_(DWORD) CMySinkObject::AddRef(void
{
return ++m_dwRefCount;
}
STDMETHODIMP CMySinkObject::QueryInterf
{
if( IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IDccManSink))
{
*ppv = (IDccManSink *)this;
}
else
{
*ppv = NULL;
return E_NOINTERFACE;
}
AddRef();
return S_OK;
}
STDMETHODIMP_(DWORD) CMySinkObject::Release(voi
{
ULONG ul = m_dwRefCount;
if (!--m_dwRefCount)
delete this;
return ul;
}
in App derived class I added variable members:
DWORD m_hrDccMan;
IDccMan* pDccMan;
HRESULT hr;
CMySinkObject m_mySkin;
in application I add to InitInstance() code:
hr = CoCreateInstance(CLSID_Dcc
pDccMan->Advise((CMySinkOb
and in ExitInstance I added:
pDccMan->Unadvise(m_hrDccM
>>let me show you my implementation
That's not the problem. The important part is that only *one* source file must '#define INITGUID', so if you place that line in a common header file, you'll get al these 'multiply defines' errors.
That's not the problem. The important part is that only *one* source file must '#define INITGUID', so if you place that line in a common header file, you'll get al these 'multiply defines' errors.
ASKER
I have already tried what you suggest
#ifndef INITGUID
#define INITGUID
#endif
#include <initguid.h>
#include <objbase.h>
#include <Dccole.h>
but the same 19 errors
#ifndef INITGUID
#define INITGUID
#endif
#include <initguid.h>
#include <objbase.h>
#include <Dccole.h>
but the same 19 errors
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Man great that worked
Great job
thank you thank you thank you
Great job
thank you thank you thank you
You're welcome :o)
#define INITGUID
before including the COM headers?