J'essaie de créer une classe qui implémente l'interface IUnknown
. Je le code suivant dans le fichier d'en-tête:Implémentation du symbole externe IUnknown, non résolu
#pragma once
#include "stdafx.h"
#include "Unknwn.h"
class Vmr9Presenter : IVMRImagePresenter9, IVMRSurfaceAllocator9
{
public:
Vmr9Presenter(void);
HRESULT Initialize(void);
~Vmr9Presenter(void);
STDMETHODIMP QueryInterface(const IID &riid, void **ppvObject);
};
J'ai inclus les uuid.lib
pertinents et plusieurs autres. Cependant, lorsque je tente de compiler, je reçois l'erreur.
Error 2 error LNK2001: unresolved external symbol "public: virtual long __stdcall Vmr9Presenter::QueryInterface(struct _GUID const &,void * *)" ([email protected]@@[email protected]@[email protected]) Vmr9Presenter.obj VmrPresenter
Cela me porte à croire que quelque chose ne se tiré dans Toutes les suggestions sur la façon de se débarrasser de cette erreur?
Votre explication est parfaitement logique. Cependant, dans le code que vous avez publié, static_cast (this) est signalé par le compilateur comme une référence ambiguë. Je suppose que c'est parce que IVMRSurfaceAllocator9 et IVMRImagePresenter9 dérivent de IUnknown? Cette distribution semble toutefois fonctionner. static_cast (static_cast (static_cast (this))) Je suppose que c'est parce que le compilateur ne peut pas, lui-même, choisir la mise en œuvre de IUnknown à utiliser? Ou suis-je complètement hors de la base et cela ne fera pas ce que je pense qu'il fait? –
Alex
Vous avez totalement raison, j'étais paresseux. Désolé pour ça.Votre solution est exactement exacte. –