[英]Get functions mangled name from C++ DLL
我有 function 聲明為__declspec(dllexport) void TakeInput();
The DLL which has this function is exported in C#.I am getting failure while executing function call to this function as entry point not found in c# code.
谷歌搜索顯示問題是沒有提供正確的入口點。我需要為此 function 提供錯誤名稱。
所以我想知道我怎樣才能得到這個 function 的損壞名稱?
您可以使用 DependancyWalker (http://www.dependencywalker.com) 或其他列出 DLL 導出的工具來獲取損壞的名稱,但您最好按照 Armen 的建議進行操作。
我建議不要嘗試計算損壞的名稱,而是只導出未損壞的名稱。 這樣做,你需要做兩件事:
通過使用 function 的 C 鏈接來禁用 C++ 名稱修改您可以使用extern "C"
來執行此操作。
確保您的 function 使用 C 調用約定。 這是默認值(至少在 Microsoft Visual Studio 中),但可以使用/Gr
(切換__fastcall
調用約定)和/Gz
(切換__stdcall
調用約定)命令行開關更改此默認值。 您可以使用__cdecl
執行 C 調用約定,如下所示:
總而言之,要確保您的 function 導出為TakeInput
,請使用:
extern "C" __declspec(dllexport) void __cdecl TakeInput();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.