c++ class in a DLL
I have a C++ class that has been so useful in so many projects, I
wanted to just put it in a DLL so that if I made improvements / fixes
I could just swap out the DLL and not have to re-compile every project
every time.
The header file looks basically like this (below). So, I just
dynamically load the library, get function pointers to the Get() and
Destroy() methods, and that's how I access the class.
#ifdef MY_EXPORTS
#define MY_API __declspec( dllexport )
#else
#define MY_API __declspec( dllimport )
#endif
#ifdef __cplusplus
extern "C" {
#endif
class MY_API CMyAPI {
public:
virtual BOOL MyFunc1() = 0;
virtual BOOL MyFunc2() = 0;
virtual BOOL MyFunc3() = 0;
virtual BOOL MyFunc4() = 0;
};
MY_API CMyAPI* CreateClass();
MY_API void DestroyClass( CMyAPI* pCtrl );
typedef CMyAPI* ( *PFN_GET_MY_CLASS )();
typedef void ( *PFN_DESTROY_MY_CLASS )( CMyAPI* );
#ifdef __cplusplus
};
#endif
My problem is that if I add a new function, MyNewFunc(), to the class
in the DLL and then try to run a program compiled with an older
version of the header file, when I try to call MyFunc2(), or
something, I may end up calling MyNewFunc() instead!
What do I need to do to ensure the class functions always point to the
right place in the DLL?
Thanks,
PaulH