【发布时间】:2018-11-15 06:21:16
【问题描述】:
我有一个 C++ DLL,我使用 DllImported LoadLibrary 将其导入到 C# 项目中。
class Program
{
[DllImport("kernel32.dll", SetLastError = true)]
public static extern IntPtr LoadLibrary(string dllToLoad);
static void Main(string[] args)
{
IntPtr library = LoadLibrary(@"MyDll.dll");
if (library == IntPtr.Zero)
{
var err = Marshal.GetLastWin32Error();
throw new Exception($"Library load error, code {err}");
}
}
}
我现在想枚举从此 DLL 导出的函数。我见过this question,但它适用于 C++,我不确定如何在 C# 中做同样的事情。
解析dumpbin /exports 的输出可能会奏效,但我想先知道是否有更具体的方法。
如何从 C# 中获取 C++ DLL 中所有函数的列表?
【问题讨论】:
-
如果你不想shell out到外部进程并解析它的输出,那么手动解析DLL的PE头来直接枚举它的EXPORTS表是唯一的方法。如果您不想自己完成这项工作,请尝试寻找可以为您完成这项工作的 3rd 方库。