Bonjour,

J'essaye d'intégrer une application à une autre application. j'ai donc copier mes fichiers de la première application à la seconde. J'ai corrigé plusieurs problèmes mais il me reste ces erreurs à l'édition de liens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
1>NVAPIExample.obj : error LNK2019: symbole externe non résolu "long __cdecl GetInterface(struct IUnknown *,void * *)" (?GetInterface@@YAJPAUIUnknown@@PAPAX@Z) référencé dans la fonction "protected: virtual long __stdcall BaseObj::QueryInterface(struct _GUID const &,void * *)" (?QueryInterface@BaseObj@@MAGJABU_GUID@@PAPAX@Z)
1>NVAPIExampleDlg.obj : error LNK2001: symbole externe non résolu "long __cdecl GetInterface(struct IUnknown *,void * *)" (?GetInterface@@YAJPAUIUnknown@@PAPAX@Z)
1>PagePreview.obj : error LNK2001: symbole externe non résolu "long __cdecl GetInterface(struct IUnknown *,void * *)" (?GetInterface@@YAJPAUIUnknown@@PAPAX@Z)
1>Debug/Amisco Organizer.exe : fatal error LNK1120: 1 externes non résolus
Pour la première je peux donner le code du fichier BaseObj.h. Pour les autres je ne sais pas d'où elles sortent.

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
#ifndef BASEOBJ_H
#define BASEOBJ_H
 
HRESULT GetInterface(LPUNKNOWN pUnk, void **ppv);
 
class BaseObj: public IUnknown
{
protected:
  BaseObj(): m_refCount(1) {}
  virtual ~BaseObj() {}
 
  STDMETHODIMP QueryInterface(REFIID riid, void** ppv)
  {
    if (riid == IID_IUnknown)
      return GetInterface(static_cast<IUnknown*>(this), ppv);
    else
      return InternalQueryInterface(riid, ppv);
  }
  STDMETHODIMP_(ULONG) AddRef() { return InterlockedIncrement((LONG*)&m_refCount); }
  STDMETHODIMP_(ULONG) Release() { ULONG r = InterlockedDecrement((LONG*)&m_refCount); if (r) return r; delete this; return 0; }
 
  virtual HRESULT InternalQueryInterface(REFIID riid, void** ppv) { return E_NOINTERFACE; }
 
  ULONG m_refCount;
};
 
#define IMPL_IUNKNOWN \
STDMETHODIMP QueryInterface(REFIID riid, void** ppv) { return BaseObj::QueryInterface(riid, ppv); } \
STDMETHODIMP_(ULONG) AddRef() { return BaseObj::AddRef(); } \
STDMETHODIMP_(ULONG) Release() { return BaseObj::Release(); }
 
#define IMPL_INTERFACE(IFNAME) \
HRESULT InternalQueryInterface(REFIID riid, void** ppv) \
{ \
  if (riid == __uuidof(IFNAME)) \
  return ::GetInterface(static_cast<IFNAME*>(this), ppv); \
  else \
    return BaseObj::InternalQueryInterface(riid, ppv); \
}
 
#endif
Quelqu'un aurait une piste au niveau des options de Visual à choisir ? Ou sur ce bout de code ?

Merci,

Sly