You don't need to export the data members ( In fact if you export the class you can't export its members ). However the client code ( the bit that's importing on the other side ) needs to understand all the types used on the interface so it will need to include the headers e.g.
that define them.
Be very careful to distinguish between exporting the class definition
class MY_API CMyClass
and exporting an instance of the class
extern MY_API CMyClass AnInstance;
The first allows the client code to create its own instance of CMyClass, the second to see a single instance provided at module scope by the DLL.
If in doubt use the first technique.
One other thing: Don't have any public data members in the exported class. Use accessor functions
. It's more portable and safer that way especially when DLLs can have their own heaps and do their own memory management.