Condividi tramite


Errore del compilatore C3705

'function': impossibile trovare l'interfaccia di eventi

È necessario definire un'interfaccia evento per usare gli eventi COM. Si noti che le #include righe dei file di intestazione ATL mostrate nell'esempio seguente sono necessarie per l'uso degli eventi COM. Per correggere questo errore, rimuovere il commento dalla definizione dell'interfaccia IEvents nel codice di esempio.

L'esempio seguente genera l'errore C3705:

// C3705.cpp
// compile with: /c
#define _ATL_ATTRIBUTES 1
#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>

[module(dll, name="idid", uuid="12341234-1234-1234-1234-123412341234")];

// Uncomment the following 4 lines to resolve.
// [object, uuid("00000000-0000-0000-0000-000000000003")]
// __interface IEvents : IUnknown {
//    HRESULT event1([in] int i);
// };

[dual, uuid("00000000-0000-0000-0000-000000000001")]
__interface IBase {
   HRESULT fireEvents();
};

[coclass, event_source(com), uuid("00000000-0000-0000-0000-000000000002")]
class CEventSrc : public IBase {
public:
   __event __interface IEvents;   // C3705 uncomment IEvents to resolve
   HRESULT fireEvents() {
      HRESULT hr = IEvents_event1(123);
      return hr;
   }
};