Je voudrais linker statiquement "dbghelp.dll" à mon programme (donc pas
de "LoadLibrary"), j'ai donc créé un .def:
---- 8< ----
LIBRARY DBGHELP
DESCRIPTION 'DBGHELP'
EXPORTS
[...]
UnDecorateSymbolName
[...]
---- 8< ----
..ce qui m'a permis d'avoir le .lib: LIB /MACHINE:i386 /DEF:dbghelp.def
Le problème est que maintenant le link ne marche pas dans mon programme
car si je spécifie "WINAPI" dans le prototype, il cherche le symbole
"_UnDecorateSymbolName@16". Si je ne le spécifié pas, ça linke mais
l'exécution plante car la convention d'appelle est mauvaise. Sinon, si
je fais un "reinterpret_cast" de "UnDecorateSymbolName" avec la bonne
convention d'appel ça marche.
Ma question est donc: comment spécifier dans le prototype de ma fonction
"WINAPI" sans qu'il cherche le symbole "_UnDecorateSymbolName@16",
mais plutot le symbole "_UnDecorateSymbolName" ?
Je voudrais linker statiquement "dbghelp.dll" à mon programme (donc pas de "LoadLibrary"), j'ai donc créé un .def:
---- 8< ----
LIBRARY DBGHELP DESCRIPTION 'DBGHELP'
EXPORTS [...] UnDecorateSymbolName [...]
---- 8< ----
..ce qui m'a permis d'avoir le .lib: LIB /MACHINE:i386 /DEF:dbghelp.def
Le problème est que maintenant le link ne marche pas dans mon programme car si je spécifie "WINAPI" dans le prototype, il cherche le symbole "". Si je ne le spécifié pas, ça linke mais l'exécution plante car la convention d'appelle est mauvaise. Sinon, si je fais un "reinterpret_cast" de "UnDecorateSymbolName" avec la bonne convention d'appel ça marche.
Ma question est donc: comment spécifier dans le prototype de ma fonction "WINAPI" sans qu'il cherche le symbole "", mais plutot le symbole "_UnDecorateSymbolName" ?
Merci de votre attention
tu n'as pas avec VC un outil permettant de recréer le .lib (genre implib) ?
"Fabien SK" <fabsk+news@free.fr> a écrit dans le message de
news:3f79361d$0$20176$626a54ce@news.free.fr...
Bonjour,
Je voudrais utiliser la fonction "UnDecorateSymbolName" de
"dbghelp.dll". Je n'ai pas le .lib (je suis avec VC6 au fait), mais j'ai
son prototype:
Je voudrais linker statiquement "dbghelp.dll" à mon programme (donc pas
de "LoadLibrary"), j'ai donc créé un .def:
---- 8< ----
LIBRARY DBGHELP
DESCRIPTION 'DBGHELP'
EXPORTS
[...]
UnDecorateSymbolName
[...]
---- 8< ----
..ce qui m'a permis d'avoir le .lib: LIB /MACHINE:i386 /DEF:dbghelp.def
Le problème est que maintenant le link ne marche pas dans mon programme
car si je spécifie "WINAPI" dans le prototype, il cherche le symbole
"_UnDecorateSymbolName@16". Si je ne le spécifié pas, ça linke mais
l'exécution plante car la convention d'appelle est mauvaise. Sinon, si
je fais un "reinterpret_cast" de "UnDecorateSymbolName" avec la bonne
convention d'appel ça marche.
Ma question est donc: comment spécifier dans le prototype de ma fonction
"WINAPI" sans qu'il cherche le symbole "_UnDecorateSymbolName@16",
mais plutot le symbole "_UnDecorateSymbolName" ?
Je voudrais linker statiquement "dbghelp.dll" à mon programme (donc pas de "LoadLibrary"), j'ai donc créé un .def:
---- 8< ----
LIBRARY DBGHELP DESCRIPTION 'DBGHELP'
EXPORTS [...] UnDecorateSymbolName [...]
---- 8< ----
..ce qui m'a permis d'avoir le .lib: LIB /MACHINE:i386 /DEF:dbghelp.def
Le problème est que maintenant le link ne marche pas dans mon programme car si je spécifie "WINAPI" dans le prototype, il cherche le symbole "". Si je ne le spécifié pas, ça linke mais l'exécution plante car la convention d'appelle est mauvaise. Sinon, si je fais un "reinterpret_cast" de "UnDecorateSymbolName" avec la bonne convention d'appel ça marche.
Ma question est donc: comment spécifier dans le prototype de ma fonction "WINAPI" sans qu'il cherche le symbole "", mais plutot le symbole "_UnDecorateSymbolName" ?