簡體   English   中英

我們如何在 C# 中從 C++ DLL 中獲取所有方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM