了解DLL的高手看下

求助 了解DLL的高手看下
我有两个类A和B   ,   其中A定义成抽象类,   现要做一DLL,DLL中从A中派生一个类   C,   定义一个导出函数GetC_Addr()   非C成员函数,作用是生成一个C的实例并把指针传出来。在另一个类B的构造函数中   做   A   *pA   ,调用GetC_Addr()   并把返回的指针pC赋给pA;
       
        这样我在DLL中函数定义成这样   :extern   "C "     __declspec(dllexport)(C   *)   GetC_Addr()   ;对么?
        为什么我在编译时会出现d:\project\comportwrapdll\comportwrapdll.h(294)   :   error   C2226:   syntax   error   :   unexpected   type   'C '错误。
       
        在B中的头文件该怎么定义   这个函数啊   我用静态调用的方法。B构造函数中   我用pA   =   GetC_Addr()   ,   怎么不对啊?

------解决方案--------------------
头文件包含了吗?
改成这样试试:
extern "C " __declspec(dllexport) C* GetC_Addr() ;//把括号去掉
------解决方案--------------------
B中一样得定义C class啊,可以包含A中的头文件,也可以重新定义
C* GetC_Addr()
{
C myClass ; //应该用new,否则对象出了函数,就无效了
return & myClass;
}

------解决方案--------------------
C要大写。。。
------解决方案--------------------
C* GetC_Addr()
{
C myClass ;
return & myClass;
}
变成返回临时变量地址了
=============
用 new 或者传个参数
唉,基本功不行啊。。。