调用外部dll
2009-01-13 09:47
239 查看
public class DllInvoke
{
[DllImport("kernel32.dll")]
private extern static IntPtr LoadLibrary(String path);
[DllImport("kernel32.dll")]
private extern static IntPtr LoadModule(String path);
[DllImport("kernel32.dll")]
private extern static IntPtr GetProcAddress(IntPtr lib, String funcName);
[DllImport("kernel32.dll")]
private extern static bool FreeLibrary(IntPtr lib);
public IntPtr hLib;
public DllInvoke(String DLLPath)
{
//hLib = LoadLibrary(DLLPath);
hLib = LoadLibrary(DLLPath);
//hLib = (IntPtr)268435456;
}
~DllInvoke()
{
FreeLibrary(hLib);
}
//将要执行的函数转换为委托
public Delegate Invoke(String APIName, Type t)
{
IntPtr api = GetProcAddress(hLib, APIName);
return (Delegate)Marshal.GetDelegateForFunctionPointer(api, t);//.NET 2.0新增了Marshal.GetDelegateForFunctionPointer 方法可以满足这个要求,MSDN里的解释是:将非托管函数指针转换为委托
}
}
----------------------------
然后程序就可以声明函数内部方法,进行调用
{
[DllImport("kernel32.dll")]
private extern static IntPtr LoadLibrary(String path);
[DllImport("kernel32.dll")]
private extern static IntPtr LoadModule(String path);
[DllImport("kernel32.dll")]
private extern static IntPtr GetProcAddress(IntPtr lib, String funcName);
[DllImport("kernel32.dll")]
private extern static bool FreeLibrary(IntPtr lib);
public IntPtr hLib;
public DllInvoke(String DLLPath)
{
//hLib = LoadLibrary(DLLPath);
hLib = LoadLibrary(DLLPath);
//hLib = (IntPtr)268435456;
}
~DllInvoke()
{
FreeLibrary(hLib);
}
//将要执行的函数转换为委托
public Delegate Invoke(String APIName, Type t)
{
IntPtr api = GetProcAddress(hLib, APIName);
return (Delegate)Marshal.GetDelegateForFunctionPointer(api, t);//.NET 2.0新增了Marshal.GetDelegateForFunctionPointer 方法可以满足这个要求,MSDN里的解释是:将非托管函数指针转换为委托
}
}
----------------------------
然后程序就可以声明函数内部方法,进行调用
相关文章推荐
- VS或者Qt调用外部动态链接库dll的方法
- 在Delphi中静态调用DLL 引用外部Dll External Dll 导入Dll
- jar包调用dll、lib等外部库文件解决办法
- vs2012 调用外部代码问题 打开项目一直加载外部dll是程序中断!!
- Python:使用ctypes库调用外部DLL(转)
- C#调用外部DLL
- 调用外部DLL,如:DelphiC++Java的DLL的调用方法,给出代码片段?
- QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)
- QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)good
- QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)
- Qt之调用外部DLL
- 摘录:C#_调用外部dll
- C# 调用外部dll
- loadrunner调用外部Dll
- 那些年,用C#调用过的外部Dll
- delphi中调用外部dll导出函数
- c#调用外部dll
- 经验教训:Delphi中out string 被外部通过Dll调用引发的错误
- Python:使用ctypes库调用外部DLL
- C#动态调用外部程序集(该程序集在dll文件中)