程序运行一定要有特定的DLL,DLL中的函数是怎样被调用的,函数的入口参数和结果放在程序的什么地方.

解决方案 »

  1.   

    感谢两位朋友的帮助,可能我未说清楚,我的意思是:DLL中的函数是如何被调用的?
      

  2.   

    去找一些PE文件结构的资料看一下,再了解一下PE文件如何映射入内存运行,你就能理解了。
      

  3.   

    加载到内存中,call就行了,就像汇编中Jmp
      

  4.   

    给你一段调用dll的代码  自己看看就应该可以懂的
    HINSTANCE  dllinstance;
        dllinstance=::LoadLibrary("EZDSK.dll");
        if(dllinstance==NULL) AfxMessageBox("can't open dll file");
        /////////////////////////////////////////////////////////////// typedef void (FAR __cdecl *Key_Download)(char KeyFileName[255],int);
        Key_Download KeyDownload;
    KeyDownload =(Key_Download)GetProcAddress(dllinstance,"Key_Download");
        if(KeyDownload ==NULL) AfxMessageBox("can't find function");
        else{ KeyDownload (fn , m_serial);
      

  5.   

    czlvc(haha) ,您好.GetProcAddress()是不是封装在EZDSK.dll中的函数.还有,redteasoft(红茶) 说的"PE文件结构"是什么样子的,以前没听说过,请您也帮着指点指点好吗?
      

  6.   

    动态调用和静态调用.
    静态调用很简单,直接在将*.lib给包含进去就可以了.
    动态调用先声明要调用的函数,
    然后用LoadLibrary调用DLL,用完后用FreeLibrary释放就可以了.