重点是如何调用:显示链接方式写的dll中的类、类的成员函数请指教!!!
急!!!!!!
刚才这个问题,我已经提过了。虽然没有解决彻底,但是我还是把分都给大家啦。这次我还会这么作,谢谢你的指教!!

解决方案 »

  1.   

    我找到个例子
    dynclass.h:
    #ifndef __DYNCLASS_H
    #define __DYNCLASS_H#include <windows.h>#ifdef _DLL // assume this is defined when we build the dll
    #define _DYNLINK __declspec( dllexport)
    #else
    #define _DYNLINK __declspec( dllimport)
    #endifclass _DYNLINK CMyClass

    public:
    CMyClass ();
    virtual ~CMyClass();
    void DoSomethingUseful();
    };
    typedef void ( CMyClass::*PMYCLASSMETHOD)();
    #ifndef _DLL
    typedef CMyClass* ( *PFNCREATEMYCLASS)();
    #else
    _DYNLINK CMyClass* CreateMyClass() 

    return ( new CMyClass());
    }
    #endif#ifndef _DLL
    typedef void ( *PFNDELETEMYCLASS)( CMyClass*);
    #else
    _DYNLINK void DeleteMyClass ( CMyClass* pObj) 

    delete pObj;
    }
    #endif#ifndef _DLL
    typedef PMYCLASSMETHOD ( *PFNGETCLASSMETHOD)();
    #else
    _DYNLINK PMYCLASSMETHOD GetClassMethod () 

    return &CMyClass::DoSomethingUseful;
    }
    #endif
    #endif // ndef __DYNCLASS_Hdynclass.cpp:
    #include <windows.h>
    #include "dynclass.h"HINSTANCE g_hinstThisDll;
    static BOOL g_bCrippledOS=FALSE;
    static OSVERSIONINFO g_osviVerInfo;
    extern "C" int APIENTRY DllMain(HINSTANCE hInstance,DWORD dwReason,LPVOID lpReserved)
    {
    BOOL bRC=TRUE;
        if(DLL_PROCESS_ATTACH==dwReason)
    {
    g_hinstThisDll=hInstance;
    g_osviVerInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
    GetVersionEx(&g_osviVerInfo);
    if(VER_PLATFORM_WIN32_WINDOWS==g_osviVerInfo.dwPlatformId)g_bCrippledOS=TRUE;
    }
    return TRUE;
    }
    CMyClass::CMyClass ()
    {
    OutputDebugString("This is CMyClass::CMyClass()\n");
    }
    CMyClass::~CMyClass()
    {
    OutputDebugString("This is CMyClass::~CMyClass()\n");
    }
    void CMyClass::DoSomethingUseful() 
    {
    OutputDebugString ( "This is CMyClass::DoSomethingUseful()\n");
    }调用dll的例子:
    #include <windows.h>
    #include "dynclass.h"
    int main(void)
    {
    PFNCREATEMYCLASS pfnCreateMyClass=0;
    PFNDELETEMYCLASS pfnDeleteMyClass=0;
    PFNGETCLASSMETHOD pfnGetClassMethod=0;
    PMYCLASSMETHOD pDoSomethingUseful=0;
    CMyClass* pMyClass=0;
    HANDLE hDll=LoadLibrary("dynclass.dll");
    if(INVALID_HANDLE_VALUE==hDll)return -1;
    pfnCreateMyClass=(PFNCREATEMYCLASS)GetProcAddress(hDll,"CreateMyClass");
    pfnDeleteMyClass=(PFNDELETEMYCLASS)GetProcAddress(hDll,"DeleteMyClass");
    pfnGetClassMethod=(PFNGETCLASSMETHOD)GetProcAddress(hDll,"GetClassMethod");
    if(pfnDeleteMyClass&&pfnCreateMyClass&&pfnGetClassMethod)
    {
    pMyClass=(pfnCreateMyClass)();
    pDoSomethingUseful=(pfnGetClassMethod());
    (pMyClass->*pDoSomethingUseful)();
    (pfnDeleteMyClass(pMyClass));
    }
    FreeLibrary(hDll);
    return 0;
    }
      

  2.   

    akiko(弥弥),谢谢你!分全给你啦!^_^