怎么重载DLL中的类中的函数?

如何重载DLL中的类中的函数???
我的工程包含一个DLL,我写了一个类A继承dll中的类B,现在想重载B的函数实现多态,但好像不行。代码类似下面这样:

//mylib.dll中的类A

class   A
{
protected:

public:
//   Init   &   Finish
__declspec(dllexport)   A(   TCHAR   *sName   );
__declspec(dllexport)   virtual   ~A();
__declspec(dllexport)   virtual   void   foo();
...
};

//myApp.exe应用程序中的类B

#include   "a.h "
class   B:public   A
{
B(   TCHAR   *sName   );
virtual   ~B();
virtual   void   foo();
};
...

在主函数中调用:
void   main(void)
{
...
A   *a;
a   =   new   B(_T( "mb "));
a.foo();//断点跟踪还是运行的A::foo
...
}

是和__declspec(dllexport)定义有关系吗,有啥好办法解决。

------解决方案--------------------
神啊,多少次了,不要在dll里导出类!
你还要在导出类上再继承,真是更狠。
------解决方案--------------------
1. 在 "a.h "中
#if defined (MYLIB_EXPORTS)
#define MYLIB_API __declspec(dllexport)
#else
#define MYLIB_API __declspec(dllimport)
#endif

class MYLIB_API A
{
.......
};

2. 在你的mylib.dll项目属性中添加MYLIB_EXPORTS定义


------解决方案--------------------
我觉得在DLL中导出类和导出函数本质上没有什么区别:
1.对于类的成员函数(包括虚函数),导出的是经过修饰的函数符号(类名+函数名+参数).
2.对于类的静态成员(包括变量和函数),导出的应该和全局变量/函数差不多,只不过这里有一个类作用域.
3.对于类包含虚函数,实际上还应该导出虚表,虚表是与常量的形式导出的,但是我们通常不会主动使用这个虚表常量.我在我的一篇BLOG中讨论过这个问题:
http://blog.****.net/houdy/archive/2007/01/28/1496161.aspx

在使用这个类之前,要保证这个类已经被正确导出了.可以使用Dependency Walker来检查DLL导出的情况.