简单dll02

    技术2022-05-20  33

    1.先编写DLL(add.DLL)

    extern "C" _declspec(dllexport) int abc(int a){a=3234;return a;}

    2.然后编写MFC对话框程序

    在事件里写入:

    HINSTANCE hInst;hInst=LoadLibrary("z1.DLL");//加载链接库typedef int (*ADDPROC)(int a); ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"abc"); if(!Add){       MessageBox(" 获取函数地址失败" );        return;}

    CString str;str.Format("%d",Add(0));MessageBox(str);

    FreeLibrary(hInst);

    别忘了把add.DLL文件放到MFC程序里!

    --------------------------------------------------

    DLL:

    extern "C" _declspec(dllexport) int jincheng()   {   AFX_MANAGE_STATE(AfxGetStaticModuleState());int a=1;return a;}  

    DLLTEST:

    typedef int (WINAPI *TESTDLL)();         HINSTANCE hmod;         hmod=::LoadLibrary("XXX.dll");         if(hmod==NULL)   {         AfxMessageBox("Fail");   }         TESTDLL     lpproc;         lpproc=(TESTDLL)GetProcAddress(hmod,"jincheng");         if(lpproc!=(TESTDLL)NULL)                m_jincheng=(*lpproc)();

    UpdateData(false);        FreeLibrary(hmod);

    ---------------------------------------------------------------------

    返回一个字符串 DLL:

    extern "C" _declspec(dllexport) char * jincheng()   {   AFX_MANAGE_STATE(AfxGetStaticModuleState());char *Str;Str="12345678";return Str; }  

    调用:

    typedef char * (WINAPI *TESTDLL)();        HINSTANCE hmod;        hmod=::LoadLibrary("../../77/Release/77.dll");        if(hmod==NULL)   {      AfxMessageBox("Fail");   }        TESTDLL lpproc;        lpproc=(TESTDLL)GetProcAddress(hmod,"jincheng");        if(lpproc!=(TESTDLL)NULL)  {   static char *Str;    Str=(*lpproc)();   if(Str!=NULL)    m_name=Str;   else    m_name=1;}else{   MessageBox("获取函数失败");}UpdateData(false);       FreeLibrary(hmod);


    最新回复(0)