[英]How do we get all methods from C++ DLL in C#?
我有一个 C++ DLL,我需要在我的 C# 应用程序中获取它的方法,但我无法获取这些方法。
这是我的代码:我尝试将 C++ Dll 转换为字节数组并获取它的方法。
byte[] data = File.ReadAllBytes(@"C:\test.dll");
var result = data.GetType();
foreach (Type type in result.Assembly.GetTypes())
{
if (!type.IsPublic)
{
continue;
}
MemberInfo[] members = type.GetMethods();
foreach (MemberInfo member in members)
{
Console.WriteLine(member.Name);
}
}
我不认为这是可能的。 我认为普通的 dll 甚至不包含类型元数据。
但也许我错了。 或者这可能有帮助:将TLB 导入 C#
C++ DLL 不是 .NET 程序集,因此您正在寻找的那种反射根本行不通。
除非 DLL 中有嵌入的 COM 类型库,否则您唯一可以 100% 确定的是 DLL 导出函数的名称/序号,因为该信息在 DLL 的 EXPORTS 表中是免费提供的。 但是要获得有关函数的更多详细信息(返回值、调用约定、参数列表),您必须对 DLL 的原始机器代码进行逆向工程,这并非易事。 该信息根本没有存储在 DLL 本身的任何位置,只有创建 DLL 的编译器知道这些细节。 像 IDA 这样的逆向工程工具可以使任务更容易一些,但仍然需要大量的手动工作来解释和调整结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.