Tengo el comando c++filt
para exigir un símbolo, ¿cuál es la herramienta para hacer lo contrario y destruir un nombre de símbolo?¿Qué es la utilidad de Linux para modificar un nombre de símbolo de C++?
Esto sería útil si deseara llamar al dlsym()
en un nombre de función C++ mutilado. Prefiero no codificar el nombre difícilmente en el código, ya que podría cambiar con el tiempo debido a nuevas versiones de compiladores o nuevas marcas de compilador que se utilizan o en la actualidad debido a la compilación de múltiples plataformas.
¿Hay una manera programática de obtener la cadena que representa una función C++ en tiempo de ejecución para que el código sea independiente del compilador? Una forma de hacer esto sería llamar a una utilidad en tiempo de compilación que realiza el cambio de nombre para el compilador que se está utilizando e inserta el nombre de símbolo de C++ destrozado apropiado en una cadena para dlsym()
.
Here is the closest to a solution I've found on this site que se logra utilizando un nombre de estilo C fijo para los símbolos C++ que están definidos en la biblioteca que desea dlsym()
, pero si no tiene control sobre lo que proporciona esa biblioteca, esta no es una opción.
Todo el mundo usa un compilador de C++ para modificar los nombres. –
¿Qué tal, eh, el compilador? –
-1, el compilador es lo único que necesita ... y esa es una respuesta bastante obvia. – Griwes