2010-10-01 6 views

Répondre

9

Mon compilateur mutile les choses un peu différentes à la vôtre (OSX g ++) mais en changeant votre leader @ à un trait de soulignement et passer le résultat à C++ filt me ​​donne le résultat que je pense que vous veulent:

bash> echo __ZN9CCSPlayer10SwitchTeamEi | c++filt 
CCSPlayer::SwitchTeam(int) 

faire l'inverse est plus délicat que CCSPlayer pourrait être un espace de noms ou d'une classe (et je soupçonne qu'ils sont mutilées différemment). Cependant, puisque vous avez la .donc vous pouvez le faire:

bash> nm library.so | c++filt | grep CCSPlayer::SwitchTeam 
000ca120 S CCSPlayer::SwitchTeam 
bash> nm library.so | grep 000ca120 
000ca120 S __ZN9CCSPlayer10SwitchTeamEi 

Bien que vous pourriez avoir besoin d'être un peu prudent à obtenir des résultats supplémentaires. (Il y a des symboles drôles dans ces fichiers .so parfois)

+0

Non, je veux que mon entrée être 'SwitchTeam' et sortir' @ _ZN9CCSPlayer10SwitchTeamEi' –

+0

Mise à jour pour montrer comment vous pouvez faire l'inverse. –

+0

Ou simplement 'C++ filt __ZN9CCSPlayer10SwitchTeamEi' – Potatoswatter

0
nm -D library.so | grep FuncName 
2

nm a un drapeau --demangle utile qui peut demangle votre .donc à la fois

nm --demangle library.so