c++ - C++ 名称修改(修饰)是确定性的吗?

标签 c++ windows name-mangling name-decoration

我希望使用托管代码在非托管 C++ DLL 上加载库,然后在已损坏的外部函数上调用 GetProcAddress。我的问题是,您从 C++ 编译器获得的错位名称是否具有确定性?即:如果原始签名未更改,名称是否始终会转换为相同的错位名称?

最佳答案

它不是由标准指定的,并且根据我的经验,在同一编译器的不同版本之间肯定会发生变化,尽管它必须在某些固定的环境下是确定性的,否则就无法单独链接两个编译模块。

如果您正在使用 GetProcAddress,将函数导出为 extern "C" 会更清晰,这样它们的名称就不会被破坏。

关于c++ - C++ 名称修改(修饰)是确定性的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3252909/

相关文章:

c++ - 为什么 std::uninitialized_move 不存在?

c++ - 控制台输出中的奇怪非 ASCII 字符

c - 替代 fopen()'s mode "wx"for Windows fopen()?

用于g++的C++名称修饰解码器?

gcc - GCC功能后缀“isra”是什么意思?

python - 如何从类访问 Python 模块的私有(private)变量

c++ - 使用 C++/MSXML 中的变音符号根据嵌入式 XSD 资源验证 XML 文件

c++ - 列表的二维数组 C++

c# - 如何打印电脑唤醒源?

java - 从 Linux 获取 Java 应用程序的正确路径文件