那位高手详解下!十分感谢!

解决方案 »

  1.   

    调用托管的平台的dll,在项目中添加引用就可以了。
    调用非托管平台的dll,用DllImport。
      

  2.   

    托管动态库:
    静态调用:
    添加引用,然后就可以像正常库一样使用了
    动态调用:
    System.Reflection.Assembly ass=System.Reflection.Aassembly.LoadFrom(dllName);
    Type t=ass.GetType(typeName);
    System.Reflection.MethodInfo mi=t.GetMethod(methodName);
    mi.Invoke(...)非托管动态库:
    静态调用:
    [System.Runtime.InteropServices.DllImport("name")]
    static extern returnType methodName(...); //static extern  是必须的
    动态调用:
    首先要定义一个跟要调用的函数匹配的委托:
    delegate void Del();//我随便举了一个,一定要匹配
    然后要声明两个API:
    [System.Runtime.InteropServices.DllImport("kernel32")]
    static extern IntPtr LoadLibraryA(string dllName);
    [System.Runtime.InteropServices.DllImport("kernel32")]
    static extern Del GetProcAddress(IntPtr hMod,string methodName);
    直接要GetProcAddress的返回值设成定义的委托即可,然后就可以调用了,举例如下:
    Del method=GetProcAddress(LoadLibraryA("dllname"),"methodname");
    method();