我需要动态地实现对DLL的访问,我能够知道DLL的名称,我也拥有该DLL,我知道它能支持什么操作,对应的参数是什么,不过这些都是通过参数传递进来的
我如何编程实现?
例如
int MyFunction(DllName,returnType,DLLFunName,type1,para1,type2,para2)
{
  // Load(DLLName);
   return DLLFunName(para1,para2);
]
请高手指点!!!

解决方案 »

  1.   

    不过对参数类型可能要使用case语句了,呵呵
      

  2.   

    我对该DLL的所有信息都是要由输入的参数来告知的,怎么做?能否给我一段代码?
      

  3.   

    typedef returnType (*FUNCTYPE)(type1 para1, type2, para2);
    HINSTANCE h = LoadLibrary(DllName);
    FUNCTYPE Func = GetProcAddress(h,DLLFunName);
    returnType ret = Func(para1, para2);
    FreeLibrary(h);
    return ret;
      

  4.   

    就是一般的思路,只是替换成变量就可以了
    但是类型不能使用变量,所以要case
    比如上面typedef returnType (*FUNCTYPE)(type1 para1, type2, para2);
    类似这些可能要case了
      

  5.   

    应该是可以的,但是需要注意有的DLL中分配了内存,需要在调用完以后释放的,这种情况处理起来就不叫难了。呵呵
      

  6.   

    可能函数的定义和调用都要涉及到可变参数个数的函数的定义,如printf一样,呵呵
      

  7.   

    就是定义好函数指针,GetProcAddress获得函数地址
    然后把传入的参数赋给dll中的函数指针调用
      

  8.   

    我的问题应该更明确一些,
    我们有一个My.dll,支持方法FunctionName,
    int FuntionName(int a,float b)
    {
    return 10;
    }
    我们的应用程序并不知道会访问这个DLL,它的一个函数是:
    CString DealDLL(char** inputData)
    {
    }
    输入是一个字符串数组,(这个数组不定长),本次内容分别是
    {
    "My.dll","typeInt","FunctionName","typeInt","53","typeFloat","123.456"
    }
    要求根据这个输入,得到答案,答案放到一个字符串中;
    谢谢!!!!
      

  9.   

    我知道答案了
    http://www.codeproject.com/dll/Execute_DLL_Function.asp
    复杂是复杂了一点,不过好歹有用,谢谢大家!