我有一个 C++ DLL,我正在使用 DllImport
ed 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 中所有函数的列表?
最佳答案
在 Remy Lebeau 的评论为我指明了正确的方向后,我查看了 PE 解析器并找到了 PeNet .它确实很好地完成了这项工作,并且除了导出的函数之外还揭示了大量信息。
它在 NuGet 上,因此您只需安装它,将 using PeNet
添加到文件顶部,然后使用如下代码:
var pe = new PeFile(@"MyDll.dll");
var functions = pe.ExportedFunctions.Select(x => x.Name).ToList();
关于c# - 从 C# 中列出非 .NET DLL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50705582/