C++动态库导出类,及使用

 

 

dll.h


#include
#include

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

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();

}

你可能感兴趣的:(SDK)