如何调用动态外部 dll

本文关键字:动态 外部 dll 调用 何调用 | 更新日期: 2023-09-27 18:32:44

在C#中,我想调用带有签名bool IsValid(string)的外部DLL中的方法,但是DLL的名称来自字符串形式的输入。

我怎样才能:

  1. 调用外部方法?

  2. 实施IsValid方法?

如何调用动态外部 dll

对于第一个问题,我找到了这个答案:

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