C++名称是否具有确定性(装饰)确定性?

Bla*_*hor 6 c++ windows name-mangling name-decoration

我希望在托管代码的非托管C++ DLL上使用LoadLibrary,然后在已经损坏的外部函数上调用GetProcAddress.我的问题是你从C++编译器确定性得到的错误名称?那就是:如果原始的签名没有改变,名称是否总是被转换为相同的错位名称?

Dan*_*ker 6

它没有由标准指定,并且在我的经验中肯定在同一编译器的版本之间发生了变化,尽管它必须在某些固定情况下是确定性的,因为否则将无法链接两个单独编译的模块.

如果您正在使用GetProcAddress,那么导出函数会更加清晰,因为extern "C"它们的名称不会被破坏.

  • 特定版本的编译器会一致地修改名称,否则它将无法与其生成的内容进行链接.除此之外,所有投注均已结束. (4认同)