Bonjour,
j'aimerais savoir s'il existe un programme (ou une bibliothèque, voire une fonction simple) qui renverrait le manglage de son paramètre version g++. (l'exact inverse de c++filt).
merci.
++
Version imprimable
Bonjour,
j'aimerais savoir s'il existe un programme (ou une bibliothèque, voire une fonction simple) qui renverrait le manglage de son paramètre version g++. (l'exact inverse de c++filt).
merci.
++
Salut,
Si tu nous expliquais clairement ce que tu souhaite faire, nous pourrions très certainement t'orienter vers une solution;)
Je sais, par exemple, qu'il existe une bibliothèque nommée libmangle dans le projet mingw (ou mingw-w64) qui est utilisée par gendef, par exemple.
Gendef est, quant à lui, un outil permettant de dégérer les fichiers *.def au départ d'une dll.
Mais je dirais que, à part si tu souhaite, effectivement, disposer d'un fichier *.def et qu'il n'est pas généré automatiquement, la manière dont le mangling est effectué est typiquement un problème qui ne devrait pas te concerner outre mesure (à moins que tu n'aie décidé de mettre ton propre compilo au point :P)
Si tu souhaite récupérer des adresses de symboles après le chargement dynamique d'une librairie : le C++ ne standardise pas l'ABI (abstract binary interface) des modules, donc celle-ci peut évoluer d'une version à l'autre de G++ (il y a eu une évolution entre G++ 3 et G++ 4, il y en aura une autre pour l'implémentation du standard C++11 ==> il est dangereux d'essayer de récupérer un pointeur sur une méthode ou sur un fonction déclarée en extern C++ à la mano.
Si tu souhaite récupérer l'adresse d'un symbole dans une librairie dynamique, il est nettement préférable de le déclarer en extern C.
ça aurait été d'appeler des méthodes C++ en C (c'est plus de la bidouille je le conçois).
d'où le fait que je recherche s'il y avait une façon de le faire livré avec G++ (le code de test et la bibliothèque auraient été compilé avec le même compilo).
bon, finalement, je vais m'amuser avec le couple DLL Explorer + abi::__cxa_demangle.
merci