0

尝试在 Microsoft Visual C++ v2010 下编译和链接包含以下内容的代码会产生未解析的外部代码:

ClassOne.h

class CIOI;

class CClassOne
{

public:
    CIOI *m_pInterface1;    

ClassOne.cpp:

void ClassOne::StartProcessing()
{
   m_pInterface1->Start();
}

void ClassOne::GetSnsMsg ()
{
   m_pInterface1->GetSensMsg();
}

类二.h:

class ClassTwo : public CIOI
{
    public:
    //...
    virtual void Start();
    virtual void GetSensMsg();

类二.cpp:

void ClassTwo::Start()
{
   Startup();
}
//...
void ClassTwo::GetSensMsg ()
{
  int dummy = 5;
// ...
}

我在链接期间得到以下信息: EventProc.lib(CIOI.obj) : error LNK2001: unresolved external symbol "public virtual void __thiscall CIOI:GetSensMsg(void)" (?GetSensMsg@CIOI@@UAEXXZ)

我在此代码段中包含“开始”函数,因为它似乎与 GetSensMsg 函数具有相同的范围,但代码为此编译和链接很好。感谢您就可能导致未解决的外部消息的原因提供的任何意见。谢谢!!

更新:这是 CIOI 的实现:IOI.h:

 class ClassOne;

 class CIOI
{
CMessage        entityMsg;
protected:
CInterfaceData  *m_pDEs;
U16BIT          *baseAddr;
RDISPMSG        emitterData;
void            ProcessEmitter(int first_half, int second_half);

public:
CIOI (CClassOne *pEM);
virtual ~CIOI();
virtual BOOL Initialize()   = 0;
virtual void Start()        = 0;
virtual void ProcessData(unsigned short msg_type = 0)   = 0;    
virtual void SendMessage(int MsgNum, WORD parm1 = 0, int msgNum2 = NoMsg, short msg1to2DelayCycles = 0) = 0;
};

看起来我可能缺少 CIOI 类中的 GetSensMsg() 声明?

4

0 回答 0