我将函数声明为__declspec(dllexport) void TakeInput();
具有此功能的DLL在C#中导出。我在执行对此函数的函数调用时失败,因为在c#代码中找不到入口点。
谷歌搜索显示问题是没有提供正确的入口点。我需要为此函数提供受损名称。
所以我想知道如何获得这个函数的错误名称?
答案 0 :(得分:4)
为避免名称损坏,请使用extern "C"
extern "C" __declspec(dllexport) void TakeInput();
答案 1 :(得分:0)
你可以使用DependancyWalker(http://www.dependencywalker.com)或其他一些列出DLL导出的工具来获取你想要的错误名称,但你最好做的是所建议的。
答案 2 :(得分:0)
我建议只输出未编码的名称,而不是尝试计算损坏的名称。要做到这一点,你需要做两件事:
通过为您的函数使用C链接禁用C ++名称修改您可以使用extern "C"
执行此操作。
确保您的函数正在使用C调用约定。这是默认设置(至少使用Microsoft Visual Studio),但可以使用/Gr
(切换__fastcall
调用约定)和/Gz
(切换{{3}来更改此默认值调用约定)命令行开关。您可以使用__stdcall
强制执行C调用约定,如下所示:
总而言之,要确保将您的函数导出为TakeInput
,请使用:
extern "C" __declspec(dllexport) void __cdecl TakeInput();