我希望使用托管代码在非托管 C++ DLL 上加载库,然后在已损坏的外部函数上调用 GetProcAddress。我的问题是,您从 C++ 编译器获得的错位名称是否具有确定性?即:如果原始签名未更改,名称是否始终会转换为相同的错位名称?
最佳答案
它不是由标准指定的,并且根据我的经验,在同一编译器的不同版本之间肯定会发生变化,尽管它必须在某些固定的环境下是确定性的,否则就无法单独链接两个编译模块。
如果您正在使用 GetProcAddress
,将函数导出为 extern "C"
会更清晰,这样它们的名称就不会被破坏。
关于c++ - C++ 名称修改(修饰)是确定性的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3252909/