2012-06-28 157 views
0

「市民:虛擬長__stdcall PCI1761Event :: GetTypeInfoCount(無符號整數*)」(GetTypeInfoCount @ PCI1761Event @@ UAGJPAI @ Z?)VS 2005錯誤LNK2001:無法解析的外部符號(2)

代碼

類PCI1761Event:
公共CComObjectRoot,
公共_IAdvDIOEvents
{

市民:
BEGIN_COM_MAP(PCI1761Event)
COM_INTERFACE_ENTRY(_IAdvDIOEvents)
END_COM_MAP()

PCI1761Event(void);<br> 

HRESULT OnDiInterrupt (
    long channel, 
    VARIANT * data, 
    long scanStart, 
    long scanCount);<br> 

HRESULT OnDiStatusChange (
    long port, 
    VARIANT * data, 
    long scanStart, 
    long scanCount);<br> 

HRESULT OnDiPatternMatch (
    long port, 
    VARIANT * data, 
    long scanStart, 
    long scanCount);<br> 

HRESULT OnDeviceRemoved (
    long DeviceNumber); 
    HRESULT STDMETHODCALLTYPE GetTypeInfoCount( 
     /* [out] */ UINT *pctinfo) ;<br> 

    HRESULT STDMETHODCALLTYPE GetTypeInfo( 
     /* [in] */ UINT iTInfo, 
     /* [in] */ LCID lcid, 
     /* [out] */ ITypeInfo **ppTInfo) ; 

    HRESULT STDMETHODCALLTYPE GetIDsOfNames( 
     /* [in] */ REFIID riid, 
     /* [size_is][in] */ LPOLESTR *rgszNames, 
     /* [in] */ UINT cNames, 
     /* [in] */ LCID lcid, 
     /* [size_is][out] */ DISPID *rgDispId) ; 

    /* [local] */ HRESULT STDMETHODCALLTYPE Invoke( 
     /* [in] */ DISPID dispIdMember, 
     /* [in] */ REFIID riid, 
     /* [in] */ LCID lcid, 
     /* [in] */ WORD wFlags, 
     /* [out][in] */ DISPPARAMS *pDispParams, 
     /* [out] */ VARIANT *pVarResult, 
     /* [out] */ EXCEPINFO *pExcepInfo, 
     /* [out] */ UINT *puArgErr) ; 

公共: 〜PCI1761Event(無效); };

爲什麼?

回答

1

因爲_IAdvDIOEvents接口你試圖實現從IDispatch派生,因此你必須在你的類上實現IDispatch方法。在ATL中,您通常會繼承IDispatchImpl<_IAdvDIOEvents, ...>課程中的課程,以便爲您實施這些課程。

+0

謝謝你的回答!我已經實現了IDispatch的方法(HRESULT STDMETHODCALLTYPE GetTypeInfoCount ...等等),但問題仍然存在。但我繼承了IDispatchImpl,它的工作原理!我想知道原因.... – suigara

+0

有可能是你錯誤地實現了一些東西。一旦你實現了缺失的方法,相應的錯誤就消失了。 –

+0

也許...無論如何,非常感謝你! – suigara

相關問題