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