Имя искажения в существующих библиотеках - конфликт - PullRequest
0 голосов
/ 30 марта 2012

У нас есть много скомпилированных инструментов C ++, включая некоторые статически связанные библиотеки C ++. Мы расширили некоторые библиотеки и, конечно, перекомпилировали их -> теперь новые dll не совместимы со старыми инструментами C ++!

ошибка:

TransceiveDataRaw @ CCommonUtils @ RegTestAPI @@ QAEIPAEH0AAHPBD2 @ Z может не находиться в библиотеке динамических ссылок IFX_CC_RegTestBase.dll

Есть ли способ игнорировать искажение имени без перекомпиляции наших инструментов (их сотни)?

1 Ответ

0 голосов
/ 30 марта 2012

Наверное, нет. Различные компиляторы C ++ (а иногда и разные версии одного и того же компилятора) используют разные схемы искажения имен, и в некотором смысле это механизм безопасности. Наряду с системой искажения имен существуют механизмы времени выполнения, уникальные для данного компилятора, которые также не будут совместимы: например, диспетчеризация виртуальных методов. Тот факт, что они не будут ссылаться, вероятно, спасет вас от создания исполняемого файла, который просто аварийно завершит работу.

...