Co to jest narzędzie Linux, aby zmienić nazwę symbolu C ++?
mamc++filt
komenda do odwzorowania symbolu, jakie jest narzędzie do wykonania odwrotnego i obrócenia nazwy symbolu?
Byłoby to przydatne, gdybym chciał zadzwonićdlsym()
na zniekształconej nazwie funkcji C ++. Wolałbym raczej nie kodować nazwy kodu w kodzie, ponieważ może się ona zmieniać z czasem z powodu nowych kompilacyjnych wersji lub nowych marek kompilatorów używanych lub obecnie z powodu kompilacji dla wielu platform.
Czy istnieje programowy sposób na uzyskanie ciągu reprezentującego funkcję C ++ w czasie wykonywania, tak aby kod był niezależny od kompilatora? Jednym ze sposobów, aby to zrobić, byłoby wywołanie narzędzia w czasie kompilacji, które wykona zniekształcanie nazwy dla używanego kompilatora i wstawi odpowiednią zniekształconą nazwę symbolu C ++ w łańcuch dladlsym()
używać.
Oto najbliższe rozwiązanie, które znalazłem na tej stronie który jest realizowany przez użycie stałej nazwy stylu C do symboli pośrednich do C ++, które są zdefiniowane w bibliotece, którą chceszdlsym()
, ale jeśli nie masz kontroli nad tym, co zapewnia ta biblioteka, nie jest to opcja.