如果在C++ Dll中有幾個導出類,但我沒有Dll共享頭文件。所以我不知道這些導出類的定義,我唯一知道的就是類名。有沒有辦法找到這些導出類並使用它們?在VC++中,有沒有什麼辦法可以知道沒有任何頭文件的dll的導出類?
現在我只能使用GetProcAddress API來查找導出函數,是否有類似的API來查找導出類?
我使用VC++ 2008編譯器。
如果在C++ Dll中有幾個導出類,但我沒有Dll共享頭文件。所以我不知道這些導出類的定義,我唯一知道的就是類名。有沒有辦法找到這些導出類並使用它們?在VC++中,有沒有什麼辦法可以知道沒有任何頭文件的dll的導出類?
現在我只能使用GetProcAddress API來查找導出函數,是否有類似的API來查找導出類?
我使用VC++ 2008編譯器。
你可以得到最接近的是通過逆向工程(使用調試器)之前找到所需的內存大小調用一個構造函數,也許你可以找出哪些成員用於(以及繼承和其他好處),但除了導出的函數外,絕對不會有正確的名稱。它可能有用,但這是一項艱鉅的任務。
有兩種方法可以從DLL中導出函數。 1)顯式鏈接對DLL 2)隱式連接到DLL
1)如果你要使用的是通過使用第一種方法 創建DLL,您將需要
2)如果你想使用的是通過使用第二種方法創建DLL你需要
在第二種情況下,你需要 - 自己 加載DLL - 計算功能解決自己 - > GetProcAddress的() - 卸載DLL自己
如果您有DLL,並且不知道它正在導出哪些類或函數 - 使用Dumpsbin和/ Exports選項可以知道所有導出的函數。
請讓我知道我是否澄清你的
Dll中是否有導出類的符號?我可以使用一些API來通過符號獲取導出類地址嗎? – ZeroLiShu
可能不是,並且絕對不是標準的必需功能。可以將這些數據包含在dll資源中,但這將是一個非常尷尬的共享定義方法。不要指望這樣的東西可用。 – Amit