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