windows - 为什么 extern "C"在以下情况下仍然无法删除名称修改

标签 windows winapi visual-c++ name-decoration

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

使用 depends ,我发现即使使用 extern "C" 仍然存在名称重整。

最佳答案

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

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

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

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

关于windows - 为什么 extern "C"在以下情况下仍然无法删除名称修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5448483/

相关文章:

python - 在 Python 中接收 WM_COPYDATA

c++ - 当我在一台机器上开发一个 EXE 并在另一台机器上运行它时,为什么安装 vcredist_x86.exe 不能修复 SideBySide 错误?

c++ - Qt 将给定的键发送到事件应用程序

c# - Windows Server 2019 上的 Xamarin 模拟器

c++ - 可能的堆损坏(win 32, native c++)

c - 我在 Windows 中写入文件时遇到问题?

c++ - Windows API 钩子(Hook) C++

windows - 是否有任何 API 函数可在安装任何待定更新时关闭 Windows?

C++重载

c++ - 为什么这个功能进入范围?