logo

nikq::cube

2006年11月3日(金) 15:13

UnDecorateSymbolName

GCCならデマングリングフィルタとして
c++filtってのがあるんだけど、
残念ながらMSVCには対応してない。

C++ Name Mangling/Demangling
http://www.kegel.com/mangle.html

によれば、
Microsoft uses a proprietary name mangling scheme in its C++ compilers (naturally).
マイクロソフトのコンパイラは、独自のプロプライエタリな変換スキームを使ってるよ(当然だよね!)
と書いてある。
細かい変換ルールは先のページに譲るとして、
ここでは一発Win32APIを使って気楽に変換することにしよう。
実際には、

imagehlp.dll / UnDecorateSymbolName(char*,char*,size,flag)

を用いる。
実装は以下のとおり。

http://nikq.nothing.sh/junkbox/undec.cpp

dispeの出力から"Export_.*:"というルールでgrepをして、

CdmaBin.dll.asm:199:Export_??4CAuDateTime@@QAEAAV0@ABV0@@Z:

これが

CdmaBin.dll.asm:199:Export public: class CAuDateTime & __thiscall CAuDateTime::operator=(class CAuDateTime const &)

という結果を得る。パーフェクツ。

written by nikq [/program] [この記事のURL] [コメントを書く] [コメント(0)]

Comments

TrackBacks

nikq::cube

MySketch 2.7.2 written by 夕雨