为什么外部“C”?在以下情况下仍然无法删除名称修改

发布于 2024-10-27 09:57:51 字数 141 浏览 1 评论 0原文

extern "C"
{
__declspec(dllexport) LRESULT CALLBACK MTest
}

使用depends,我发现即使使用extern“C”仍然存在名称修改。

extern "C"
{
__declspec(dllexport) LRESULT CALLBACK MTest
}

Using depends , I found there is still name mangling even using extern "C".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

剑心龙吟 2024-11-03 09:57:51

使用 __declspec(dllexport) 获得真正未修饰的名称的唯一方法是使用 __cdecl 调用约定导出它们。 CALLBACK 变成 __stdcall,它用前导 _ 和尾随 @bytes 修饰名称的“C”形式。

否则,您可以使用 .DEF 文件,这很痛苦。另一种 MSVC 特定方法是嵌入 /EXPORT 指令写入目标文件(或将其作为显式链接器设置传递)

#pragma comment(linker, "/EXPORT:ExportSymbol=DecoratedName");

由于某种原因,指令的 = 部分未在帮助中列出

The only way to get truly undecorated names with __declspec(dllexport) is to export them with the __cdecl calling convention. CALLBACK becomes __stdcall, which decorates the "C" form of the name with a leading _ and trailing @bytes.

Otherwise you can use a .DEF file, which is a pain. Another MSVC specific way is to embed a /EXPORT directive into the object file (or pass it as a explicit linker setting)

#pragma comment(linker, "/EXPORT:ExportSymbol=DecoratedName");

For some reason the = part of the directive is not listed in the help

撩起发的微风 2024-11-03 09:57:51

这是名称修饰而不是破坏。您应该在 DEF 文件中声明未修饰的名称,然后您将获得您正在寻找的行为。

That's name decoration rather than mangling. You should declare the undecorated name in a DEF file and then you'll get the behaviour you are seeking.

生生漫 2024-11-03 09:57:51

作为一名视觉 C++ 程序员,我首先想到的是……“这些宏 LRESULT 或 CALLBACK 是否引入了标准调用约定?”损坏的名称是否有@NUMBER_OF_BYTES_OF_PARAMATER_LIST或描述附加到它们的实际类型的字符?

Not being much of a visual C++ programmer the first thought that occurs to me is ... "do any of those macros LRESULT or CALLBACK introduce the standard calling convention?" Do the mangled names have @NUMBER_OF_BYTES_OF_PARAMATER_LIST or characters depicting the actual types appended to them?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文