Mam polecenie c++filt
do demolowania symbolu, jakie jest narzędzie do odwrotnego działania i zmień nazwę symbolu?Co to jest narzędzie Linux do łączenia nazwy symbolu C++?
Byłoby to przydatne, gdybym chciał zadzwonić pod numer dlsym()
na zmanipulowaną nazwę funkcji C++. Wolę nie kodować nazwy kodu, ponieważ może się ona zmieniać z czasem z powodu nowych wersji kompilatora lub nowych kompilatorów, które są obecnie używane z powodu kompilacji dla wielu platform.
Czy istnieje programowy sposób uzyskania ciągu znaków reprezentującego funkcję C++ w czasie wykonywania, 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 wykonuje mangling nazwy używanego kompilatora i wstawia odpowiednią zniekształconą nazwę symbolu C++ do ciągu znaków, który ma być użyty w postaci dlsym()
.
Here is the closest to a solution I've found on this site który jest realizowany za pomocą ustalonej nazwy stylu C dla pośrednich do symboli C++, które są zdefiniowane w bibliotece, którą chcesz dlsym()
, ale jeśli nie masz kontroli nad tym, co zapewnia ta biblioteka, nie jest to opcja.
Każdy używa kompilatora C++ do mangle nazw. –
A może kompilator? –
-1, kompilator jest jedyną rzeczą, której potrzebujesz ... i to jest oczywista odpowiedź. – Griwes