完了完了,情况危急的时刻,居然脑子空了,问大家一个问题。。
这个类是这样的:
class CIOleUILinkContainer : public IOleUILinkContainer
{
private:
ULONG m_cRef;
LPCPage m_pPage;
UINT m_iTenant;
LPOLEUILINKCONTAINER m_pDelIUILinks;
public:
BOOL m_fDirty; //No reason to hide it.
protected:
STDMETHODIMP GetObjectInterface(DWORD, REFIID, LPLPVOID);
public:
CIOleUILinkContainer(LPCPage);
~CIOleUILinkContainer(void);
BOOL FInit(void);
BOOL IsDirty(void);
STDMETHODIMP QueryInterface(REFIID, LPLPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP_(DWORD) GetNextLink(DWORD);
STDMETHODIMP SetLinkUpdateOptions(DWORD, DWORD);
STDMETHODIMP GetLinkUpdateOptions(DWORD, LPDWORD);
STDMETHODIMP SetLinkSource(DWORD, LPSTR, ULONG
, ULONG FAR *, BOOL);
STDMETHODIMP GetLinkSource(DWORD, LPSTR FAR *
, ULONG FAR *, LPSTR FAR *
, LPSTR FAR *, BOOL FAR *
, BOOL FAR *);
STDMETHODIMP OpenLinkSource(DWORD);
STDMETHODIMP UpdateLink(DWORD, BOOL, BOOL);
STDMETHODIMP CancelLink(DWORD);
};
typedef CPage *LPCPage;
我在另外一个类里面调用:
BOOL CPages::FGetUILinkContainer(LPCIOleUILinkContainer *ppObj)
{
LPCIOleUILinkContainer pObj;
*ppObj=NULL;
if (NULL==m_pPageCur)
return FALSE;
pObj=new CIOleUILinkContainer(m_pPageCur);
if (NULL==pObj)
return FALSE;
if (!pObj->FInit())
{
delete pObj;
return FALSE;
}
pObj->AddRef();
*ppObj=pObj;
return TRUE;
}
就这一句:
pObj=new CIOleUILinkContainer(m_pPageCur);
居然给我报了下面的错:
1>PAGES.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CIOleUILinkContainer::CIOleUILinkContainer(class CPage *)" (??0CIOleUILinkContainer@@QAE@PAVCPage@@@Z),该符号在函数 "public: int __thiscall CPages::FGetUILinkContainer(class CIOleUILinkContainer * *)" (?FGetUILinkContainer@CPages@@QAEHPAPAVCIOleUILinkContainer@@@Z) 中被引用
1>PAGES.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CIOleUILinkContainer::~CIOleUILinkContainer(void)" (??1CIOleUILinkContainer@@QAE@XZ),该符号在函数 "public: void * __thiscall CIOleUILinkContainer::`scalar deleting destructor'(unsigned int)" (??_GCIOleUILinkContainer@@QAEPAXI@Z) 中被引用
1>PAGES.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall CIOleUILinkContainer::FInit(void)" (?FInit@CIOleUILinkContainer@@QAEHXZ),该符号在函数 "public: int __thiscall CPages::FGetUILinkContainer(class CIOleUILinkContainer * *)" (?FGetUILinkContainer@CPages@@QAEHPAPAVCIOleUILinkContainer@@@Z) 中被引用
lz不行了,求大家帮助。。
[解决办法]
目测是类的构造函数只有定义没有实现 ATL+G一下看看?有装番茄没?