Что такое утилита Linux для изменения имени символа С++?

У меня есть команда c++filtдля демонтажа символа, что это за инструмент, чтобы сделать наоборот и исказить имя символа?

Это было бы полезно, если бы я захотел вызвать dlsym()для искаженного имени функции C++.Я бы предпочел не жестко кодировать искажение имени в коде, поскольку оно может меняться со временем из-за новых версий компиляторов или новых брендов компиляторов или в настоящее время из-за компиляции для нескольких платформ.

Есть ли программный способ получить строку, представляющую функцию С++ во время выполнения, чтобы код не зависел от компилятора? Одним из способов сделать это может быть вызов утилиты во время компиляции, которая выполняет изменение имени для используемого компилятора и вставляет соответствующее искаженное имя символа C++ в строку для использования dlsym().

Вот самое близкое к решению, которое я нашел на этом сайте , которое достигается за счет использования фиксированного имени стиля C для косвенных символов C++, которые определены в библиотеке, которую вы хотите dlsym(), но если вы этого не сделаете, иметь контроль над тем, что предоставляет эта библиотека, это не вариант.

47
задан Community 23 May 2017 в 11:54
поделиться