关于一个VC++6.0技术内幕的COM错误问题,错误信息:error C2504: 'IMotion' : base class undefined

错误信息:error C2504: 'IMotion' : base class undefined

在自己试着写第24章EX24B例子时出现的。

注意这个例子是建立一个DLL,所以在建立时应该选择:ATL COM AppWizard

这个错误的原因是
在 SPACESHIP.CPP 中


#include "stdAfx.h"
#include "ex24b.h"
#include "Interface.h"
#include "Spaceship.h"
这里的引用头文件的时候要注意其顺序,如果把"Spaceship.h",放在了"Interface.h"之前,那么在连接编译的时候,在"Spaceship.h"头文件中:
DECLARE_MESSAGE_MAP()
 DECLARE_OLECREATE(CSpaceship)

    BEGIN_INTERFACE_PART(Motion, IMotion)
        STDMETHOD_(void, Fly) ();
        STDMETHOD_(int&, GetPosition) ();
    END_INTERFACE_PART(Motion)

    BEGIN_INTERFACE_PART(Visual, IVisual)
        STDMETHOD_(void, Display) ();
    END_INTERFACE_PART(Visual)
处,由于还没有明确定义这个接口,所以系统会提示这个2个接口没有基类,其实就是一种错误信息。所以必须把"Interface.h"放在前面。 

可以试验,我分析了以后,试验是成功的。

你可能感兴趣的:(c,Class,dll,vc++,interface)