Что такое утилита Linux для искажения имени символа C ++?
я имеюc++filt
команда, чтобы разобрать символ, что инструмент, чтобы сделать противоположное и искажать имя символа?
Это было бы полезно, если бы я хотел позвонитьdlsym()
на искаженном имени функции C ++. Я скорее не буду жестко кодировать искажение имени в коде, так как оно может измениться со временем из-за использования новых версий компиляторов или новых брендов компиляторов или в настоящее время из-за компиляции для нескольких платформ.
Есть ли программный способ получить строку, которая представляет функцию C ++ во время выполнения, чтобы код не зависел от компилятора? Один из возможных способов сделать это - вызвать во время компиляции утилиту, которая выполняет искажение имени для используемого компилятора и вставляет соответствующее искаженное имя символа C ++ в строку дляdlsym()
использовать.
Вот наиболее близкое к решению, которое я нашел на этом сайте. что достигается путем использования фиксированного имени в стиле C для обращения к символам C ++, которые определены в библиотеке, которую вы хотитеdlsym()
, но если у вас нет контроля над тем, что предоставляет эта библиотека, это не вариант.