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 :
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 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
Quelqu'un aurait une piste au niveau des options de Visual à choisir ? Ou sur ce bout de code ?
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
Merci,
Sly
Partager