在现有库中命名mangling - 冲突

时间:2012-03-30 14:20:00

标签: c++ dll name-mangling

我们有很多编译的C ++工具,包括一些静态链接的C ++库。我们扩展了一些库,当然重新编译了它 - >现在新的dll与旧的C ++工具不兼容!

错误:

  

TransceiveDataRaw @ CCommonUtils @ RegTestAPI @@ QAEIPAEH0AAHPBD2 @ Z can   不在动态链接库IFX_CC_RegTestBase.dll

有没有办法忽略这个名称,而不重新编译我们的工具(有数百个)?

1 个答案:

答案 0 :(得分:0)

可能不是。不同的C ++编译器(有时是同一编译器的不同版本)使用不同的名称修改方案,在某种程度上这是一种安全机制。除了名称修改系统之外,还有给定编译器特有的运行时机制,这些机制也不兼容:例如,虚方法分派。这些不会链接的事实可能会使您无法构建可能会崩溃和烧毁的可执行文件。