dll.h
#include <stdlib.h>
#include <stdio.h>
class virtualXXX
{
public:
virtual void functionOne() = 0;
virtual void functionTwo() = 0;
};
#if defined(_WINDOWS)
#ifdef XXX_API
#define XXX_API __declspec(dllexport)
#else
#define XXX_API __declspec(dllimport)
#endif
#else
#define XXX_API
#endif
class XXX_API xxx : public virtualXXX
{
public:
void functionOne()
{
printf ( "One\n" );
}
void functionTwo()
{
printf ( "Two\n" );
}
};
extern "C" XXX_API virtualXXX * create();
extern "C" XXX_API void delete_object( virtualXXX * p );
dll.c
virtualXXX * create()
{
return ( new xxx() );
}
void delete_object( virtualXXX * p )
{
if ( p )
{
delete p;
p = NULL;
}
}
测试
#include <Windows.h>
typedef virtualXXX *(fun_create)(void);
fun_create* vc_create = NULL;
int main()
{
HINSTANCE dllHandle = NULL;
dllHandle = LoadLibrary( "Win32_Test_dll.dll" );
vc_create = ( fun_create* )GetProcAddress( dllHandle,"create" );
virtualXXX * xxxHandle = vc_create();
xxxHandle->functionOne();
xxxHandle->functionTwo();
}