如何调用动态外部 dll
本文关键字:动态 外部 dll 调用 何调用 | 更新日期: 2023-09-27 18:32:44
在C#中,我想调用带有签名bool IsValid(string)
的外部DLL中的方法,但是DLL的名称来自字符串形式的输入。
我怎样才能:
-
调用外部方法?
-
实施
IsValid
方法?
对于第一个问题,我找到了这个答案:
string path = ApplicationMapPath+ objDLLName + ".dll";
System.Reflection.Assembly a = System.Reflection.Assembly.LoadFile(path);
Type t = a.GetType("<namespace>.<Class>");
object instance = a.CreateInstance("<namespace>.<Class>");
MethodInfo m = t.GetMethod("<FuncName>");// Call the method
object res = m.Invoke(instance, new object[] { txtBox.Text }); // Get the result here
外部 DLL 是托管还是非托管?
如果它是托管 DLL,Assembly.LoadFrom
将允许您加载它并从其中的类调用函数。
对于非托管 DLL,@lcfseth的链接是正确的方法。
我能想到的唯一方法是使用 Win32 库和 LoadLibrary API 函数的特殊性。以下链接应该可以帮助您入门:
http://www.codeproject.com/Articles/27298/Dynamic-Invoke-C-DLL-function-in-C