下面是从MFC42.DEF当中选出的导出函数的符号,我想由此知道这些东西倒底是导出的哪个"函数名",请高手指点,谢谢.这道题我最初是在
http://expert.csdn.net/Expert/topic/2091/2091196.xml?temp=.2730066
提出的,可是没有结果,能解决的那边还有一百分.谢谢!??1CDialog@@UAE@XZ @ 641 NONAME 281
??0CDialog@@QAE@IPAVCWnd@@@Z @ 324 NONAME 144
我想上面两个是否是指CDialog 的两个不同的构造函数,好像又不像??1CFile@@UAE@XZ @ 665 NONAME 299
??1CArchive@@QAE@XZ @ 603 NONAME 25b
??0CArchive@@QAE@PAVCFile@@IHPAX@Z @ 273 NONAME 111
??0AFX_EXCEPTION_LINK@@QAE@XZ @ 268 NONAME 10c
??0CWinApp@@QAE@PBD@Z @ 561 NONAME 231
??1CWinApp@@UAE@XZ @ 815 NONAME 32f
??4CString@@QAEABV0@ABV0@ 35a
??0CString@@QAE@PBD@Z @ 537 NONAME 219??0CFile@@QAE@PBDI@Z @ 353 NONAME 161
??0AFX_MODULE_STATE@@QAE@HP6GJPAUHWND__@@IIJ@ZK@Z @ 269 NONAME 10d
??1AFX_MAINTAIN_STATE@@QAE@XZ @ 599 NONAME 257
 ??1AFX_MODULE_STATE@@UAE@XZ @ 600 NONAME 258
??3CNoTrackObject@@SGXPAX@Z @ 826 NONAME 33a
??0CDynLinkLibrary@@QAE@AAUAFX_EXTENSION_MODULE@@H@Z@ 342 NONAME  156  上面这些是否都是指的构造函数????????H@YG?AVCString@@ABV0@0@Z @ 922 NONAME 39a
??2@YAPAXI@Z @ 823 NONAME 337
??3@YAXPAX@Z @ 825 NONAME 339上面这三个彻底不懂,"H","2","3"也是导出函数名吗?

解决方案 »

  1.   

    C++编译时函数名修饰约定规则(ZT):__stdcall调用约定:1、以"?"标识函数名的开始,后跟函数名;2、函数名后面以"@@YG"标识参数表的开始,后跟参数表;3、参数表以代号表示:X--void ,D--char,E--unsigned char,F--short,H--int,I--unsigned int,J--long,K--unsigned long,M--float,N--double,_N--bool,....PA--表示指针,后面的代号表明指针类型,如果相同类型的指针连续出现,以"0"代替,一个"0"代表一次重复;4、参数表的第一项为该函数的返回值类型,其后依次为参数的数据类型,指针标识在其所指数据类型前; 5、参数表后以"@Z"标识整个名字的结束,如果该函数无参数,则以"Z"标识结束。其格式为"?functionname@@YG*****@Z"或"?functionname@@YG*XZ",例如          int Test1(char *var1,unsigned long)-----“?Test1@@YGHPADK@Z”
              void Test2()                       -----“?Test2@@YGXXZ”__cdecl调用约定:规则同上面的_stdcall调用约定,只是参数表的开始标识由上面的"@@YG"变为"@@YA"。__fastcall调用约定:规则同上面的_stdcall调用约定,只是参数表的开始标识由上面的"@@YG"变为"@@YI"。VC++对函数的省缺声明是"__cedcl",将只能被C/C++调用.
      

  2.   

    万分感谢,我想我已经明白了一大部分,但是还有几个地方不太明白,所以还要向大侠求救:
    1, 在 @@ 之后出现的比较多的还有 UAE, QAE, MAE , MBE, IAE, QBE, 我想这些是不是专门用来修饰类的成员函数的? 它们的意思表示的有哪些不同呢???
    2, 在函数名之前有两个 ?? 又是表示什么意思呢?两个?? 之后的 0,1,2,3………… 又是表示什么呢??
    3, ??H@YG?AVCString@@ABV0@0@Z @ 922 NONAME 
    ??2@YAPAXI@Z @ 823 NONAME
    ??3@YAXPAX@Z @ 825 NONAME 上面这三个当中的"H","2","3"也是导出函数名吗???
      

  3.   

    呵呵,今天偶尔看见了以前保存的MFC42.DLL的资料,以前没有仔细看,看了一下你的东东,
    再仔细地看了一下资料,靠,居然完全能够解决,嘿嘿,不敢独享,贴出来。
      

  4.   

    MFC42.MAP 由'VC6'的'MFC42.MAP'转换而来的'符号'文件.
    MFCPUB.TXT 'MFC42.DLL'中输出函数的'声明'列表。
    MFCEXP.TXT 'MFC42.DLL'中输出函数的'调用'名称列表。MFC42.MAP
    MFC42_original Timestamp is 35889e42 (Wed Jun 17 21:57:38 1998) Preferred load address is 5f400000 Start         Length     Name                   Class
     0001:00000000 00099250H .text                   CODE
     0002:00000000 000346a0H .rdata                  DATA
     0003:00000000 00007464H .data                   DATA
     0004:00000000 0000a2c0H .rsrc                   DATA
     0005:00000000 0000ef4cH .reloc                  DATA  Address         Publics by Value              Rva+Base   Lib:Object 0001:00000000       ?GetData@CThreadLocalObject@@QAEPAVCNoTrackObject@@P6GPAV2@XZ@Z 5f401000 f
     0001:0000007d       __EH_prolog                5f40107d f
     0001:00000083       ?AfxGetModuleState@@YGPAVAFX_MODULE_STATE@@XZ 5f401083 f
     0001:000000ab       ?GetData@CProcessLocalObject@@QAEPAVCNoTrackObject@@P6GPAV2@XZ@Z 5f4010ab f
     0001:000000f8       ?AfxGetThread@@YGPAVCWinThread@@XZ 5f4010f8 f
     0001:00000109       ?AfxGetModuleThreadState@@YGPAVAFX_MODULE_THREAD_STATE@@XZ 5f401109 f
     0001:00000120       ?FromHandle@CWnd@@SGPAV1@PAUHWND__@@@Z 5f401120 f
     0001:00000147       ?afxMapHWND@@YGPAVCHandleMap@@H@Z 5f401147 f
     0001:000001bb       ?FromHandle@CHandleMap@@QAEPAVCObject@@PAX@Z 5f4011bb f
     0001:0000026b       ?AttachControlSite@CWnd@@IAEXPAVCHandleMap@@@Z 5f40126b f
     0001:000002a0       ?GetValueAt@CMapPtrToPtr@@QBEPAXPAX@Z 5f4012a0 f
     0001:000002d3       ?FromHandlePermanent@CWnd@@SGPAV1@PAUHWND__@@@Z 5f4012d3 f
     0001:000002ee       ?PumpMessage@CWinThread@@UAEHXZ 5f4012ee f
     0001:0000032e       ?IsIdleMessage@CWinThread@@UAEHPAUtagMSG@@@Z 5f40132e f
     0001:0000039e       ?AfxGetMainWnd@@YGPAVCWnd@@XZ 5f40139e f
     0001:000003b3       ?GetMainWnd@CWinThread@@UAEPAVCWnd@@XZ 5f4013b3 f
     0001:000003d0       ?GetTopLevelParent@CWnd@@QBEPAV1@XZ 5f4013d0 f
     0001:000003f8       ?AfxGetParentOwner@@YGPAUHWND__@@PAU1@@Z 5f4013f8 f
     0001:0000043f       ?GetOwner@CWnd@@QBEPAV1@XZ 5f40143f f
     0001:00000456       ?PreTranslateMessage@CWinThread@@UAEHPAUtagMSG@@@Z 5f401456 f
     0001:000004ad       ?WalkPreTranslateTree@CWnd@@SGHPAUHWND__@@PAUtagMSG@@@Z 5f4014ad f
     0001:000004ef       ?PreTranslateMessage@CWnd@@UAEHPAUtagMSG@@@Z 5f4014ef f
     0001:00000508       ?PreTranslateMessage@CFrameWnd@@UAEHPAUtagMSG@@@Z 5f401508 f
     0001:0000057a       ?_FilterToolTipMessage@CWnd@@SGXPAUtagMSG@@PAV1@@Z 5f40157a f
     0001:0000058a       ?FilterToolTipMessage@CWnd@@QAEXPAUtagMSG@@@Z 5f40158a f
     0001:00000738       ?_AfxHandleSetCursor@@YGHPAVCWnd@@II@Z 5f401738 f
     0001:00000772       ?OnSetCursor@CFrameWnd@@IAEHPAVCWnd@@II@Z 5f401772 f
     0001:0000078f       ?GetActiveDocument@CFrameWnd@@UAEPAVCDocument@@XZ 5f40178f f
     0001:0000079f       ?GetDefaultAccelerator@CFrameWnd@@UAEPAUHACCEL__@@XZ 5f40179f f
     0001:000007c5       ?OnNotify@CWnd@@MAEHIJPAJ@Z 5f4017c5 f
     0001:0000083f       ?AfxOleTermOrFreeLib@@YGXHH@Z 5f40183f f
     0001:00000887       ?GetWindowTextA@CWnd@@QBEXAAVCString@@@Z 5f401887 f
     0001:000008c5       ?AfxGetThreadState@@YGPAV_AFX_THREAD_STATE@@XZ 5f4018c5 f
     0001:000008d5       _memset                    5f4018d5 f
     0001:000008db       ?AfxLockGlobals@@YGXH@Z    5f4018db f
     0001:0000094c       ?AfxUnlockGlobals@@YGXH@Z  5f40194c f
     0001:0000096d       ?_GetBaseDispatchMap@CCmdTarget@@KGPBUAFX_DISPMAP@@XZ 5f40196d f
     0001:00000970       ?Free@CFixedAlloc@@QAEXPAX@Z 5f401970 f
     0001:0000099c       ??0AFX_MAINTAIN_STATE2@@QAE@PAVAFX_MODULE_STATE@@@Z 5f40199c f
     0001:000009c3       ?AfxWndProcBase@@YGJPAUHWND__@@IIJ@Z 5f4019c3 f
     0001:00000a13       ?AfxWndProc@@YGJPAUHWND__@@IIJ@Z 5f401a13 f
     0001:00000a41       ?AfxCallWndProc@@YGJPAVCWnd@@PAUHWND__@@IIJ@Z 5f401a41 f
     0001:00000b0a       ?WindowProc@CWnd@@MAEJIIJ@Z 5f401b0a f
     0001:00000b4e       ?OnWndMsg@CWnd@@MAEHIIJPAJ@Z 5f401b4e f
     0001:00000e8e       ?AfxFindMessageEntry@@YGPBUAFX_MSGMAP_ENTRY@@PBU1@III@Z 5f401e8e f
     0001:00000ece       ?DefWindowProcA@CWnd@@MAEJIIJ@Z 5f401ece f
     0001:00000ef7       ?GetParentFrame@CWnd@@QBEPAVCFrameWnd@@XZ 5f401ef7 f
     0001:00001012       ??1CWnd@@UAE@XZ            5f402012 f
     0001:00001086       ??1CCmdTarget@@UAE@XZ      5f402086 f
     0001:000010c7       ?FreeDataChain@CPlex@@QAEXXZ 5f4020c7 f
     0001:000010df       ??0CString@@QAE@XZ         5f4020df f
     0001:000010ef       ?AfxGetEmptyString@@YGABVCString@@XZ 5f4020ef f
     0001:000010f5       _memcpy                    5f4020f5 f
     0001:000010fb       ??1CString@@QAE@XZ         5f4020fb f
     0001:00001125       ?FreeData@CString@@KIXPAUCStringData@@@Z 5f402125 f
     0001:0000116d       ?IsFrameWnd@CFrameWnd@@UBEHXZ 5f40216d f
     0001:00001171       ?Default@CWnd@@IAEJXZ      5f402171 f
     0001:00001171       ?OnPaint@CCtrlView@@IAEXXZ 5f402171 f
    下面还有n多,贴不完
      

  5.   

    MFCEXP.TXTDllGetClassObject
    DllCanUnloadNow
    DllRegisterServer
    DllUnregisterServer
    ?classCCachedDataPathProperty@CCachedDataPathProperty@@2UCRuntimeClass@@B
    ?classCDataPathProperty@CDataPathProperty@@2UCRuntimeClass@@B
    MFC42_7
    MFC42_8
    MFC42_9
    MFC42_10
    MFC42_11
    MFC42_12
    MFC42_13
    MFC42_14
    MFC42_15
    MFC42_16
    MFC42_17
    MFC42_18
    .......
    .......
    ??0_AFX_CHECKLIST_STATE@@QAE@XZ
    ??0_AFX_COLOR_STATE@@QAE@XZ
    _AfxBinaryCompatibleStubFunction
    ??0_AFX_DAO_STATE@@QAE@XZ
    ??0_AFX_EDIT_STATE@@QAE@XZ
    ??0_AFX_OLE_STATE@@QAE@XZ
    ??0_AFX_THREAD_STATE@@QAE@XZ
    ??0_AFX_WIN_STATE@@QAE@XZ
    ??0_AFXCTL_AMBIENT_CACHE@@QAE@XZ
    ??0_AFXCTL_UIACTIVE_INFO@@QAE@PAUHMENU__@@PAUIOleInPlaceFrame@@@Z
    ??0AFX_CLASSINIT@@QAE@PAUCRuntimeClass@@@Z
    ??0AFX_DDPDATA@@QAE@PAXHH0IPBD@Z
    ??0AFX_EXCEPTION_LINK@@QAE@XZ
    ??0AFX_MODULE_STATE@@QAE@HP6GJPAUHWND__@@IIJ@ZK@Z
    ??0AFX_MODULE_STATE@@QAE@HP6GJPAUHWND__@@IIJ@ZKH@Z
    ??0AFX_MODULE_THREAD_STATE@@QAE@XZ
    ??0CAnimateCtrl@@QAE@XZ
    ??0CArchive@@QAE@PAVCFile@@IHPAX@Z
    ??0CArchivePropExchange@@QAE@AAVCArchive@@@Z
    ??0CArchiveStream@@QAE@PAVCArchive@@@Z
    ??0CAsyncMonikerFile@@QAE@XZ
    ??0CAsyncPropExchange@@QAE@K@Z
    ??0CAsyncSocket@@QAE@XZ
    ??0CBitmap@@QAE@XZ
    ??0CBitmapButton@@QAE@XZ
    ??0CBlobProperty@@QAE@PAX@Z
    ??0CBrush@@QAE@HK@Z
    ??0CBrush@@QAE@K@Z
    ??0CBrush@@QAE@PAVCBitmap@@@Z
    ??0CBrush@@QAE@XZ
    ??0CButton@@QAE@XZ
    ??0CByteArray@@QAE@XZ
    ??0CCheckListBox@@QAE@XZ
    ??0CClientDC@@QAE@PAVCWnd@@@Z
    ??0CCmdTarget@@QAE@XZ
    ??0CCmdUI@@QAE@XZ
    ??0CColorButton@@QAE@XZ
    ??0CColorDialog@@QAE@KKPAVCWnd@@@Z
    ??0CColorPropPage@@QAE@XZ
    ??0CComboBox@@QAE@XZ
    ??0CCommandLineInfo@@QAE@XZ
    ??0CConnectionPoint@@QAE@XZ
    ??0CControlBar@@IAE@XZ
    ??0CControlBarInfo@@QAE@XZ
    ??0CControlDataSource@COleControl@@QAE@PAV1@@Z
    ??0CControlFrameWnd@@QAE@PAVCOleControl@@@Z
    ??0CCriticalSection@@QAE@XZ
    ??0CCtrlView@@QAE@PBDK@Z
    ??0CDaoDatabase@@QAE@PAVCDaoWorkspace@@@Z
    ??0CDaoException@@QAE@XZ
    ??0CDaoFieldExchange@@QAE@IPAVCDaoRecordset@@PAX@Z
    ??0CDaoIndexFieldInfo@@QAE@XZ
    ??0CDaoIndexInfo@@QAE@XZ
    ??0CDaoQueryDef@@QAE@PAVCDaoDatabase@@@Z
    ??0CDaoRecordset@@QAE@PAVCDaoDatabase@@@Z
    ??0CDaoRecordView@@IAE@I@Z
    ??0CDaoRecordView@@IAE@PBD@Z
    ??0CDaoRelationFieldInfo@@QAE@XZ
    ??0CDaoRelationInfo@@QAE@XZ
    ??0CDaoTableDef@@QAE@PAVCDaoDatabase@@@Z
    ??0CDaoWorkspace@@QAE@XZ
    ??0CDatabase@@QAE@XZ
    ??0CDataBoundProperty@@QAE@PAV0@JG@Z
    ??0CDataExchange@@QAE@PAVCWnd@@H@Z
    ??0CDataSourceControl@@QAE@PAVCOleControlSite@@@Z
    ??0CDBException@@QAE@F@Z
    ??0CDBVariant@@QAE@XZ
    ??0CDC@@QAE@XZ
    ??0CDialog@@QAE@IPAVCWnd@@@Z
    ??0CDialog@@QAE@PBDPAVCWnd@@@Z
    ??0CDialog@@QAE@XZ
    ??0CDialogBar@@QAE@XZ
    ??0CDialogTemplate@@QAE@PAX@Z
    ??0CDialogTemplate@@QAE@PBUDLGTEMPLATE@@@Z
    ??0CDocItem@@IAE@XZ
    ??0CDockBar@@QAE@H@Z
    ??0CDockContext@@QAE@PAVCControlBar@@@Z
    ??0CDockState@@QAE@XZ
    ??0CDocManager@@QAE@XZ
    ??0CDocObjectServer@@QAE@PAVCOleServerDoc@@PAUIOleDocumentSite@@@Z
    ??0CDocObjectServerItem@@IAE@PAVCOleServerDoc@@H@Z
    ??0CDocTemplate@@IAE@IPAUCRuntimeClass@@00@Z
    ??0CDocument@@QAE@XZ
    ??0CDragListBox@@QAE@XZ
    ........
    .......
      

  6.   

    我现在最想说的就是感谢,感谢CWANTER 和 小人物 对我的帮助,让我终于找到了方法,感谢这么多人对我的关心和支持。觉得还是这里好,有什么问题有这么多人在帮助我,真是很想说一句感激这个网站的话,该说什么呢?只能是祝愿CSDN 越办越好吧。愿 CSDN 成为我们每个程序员的好朋友。
    谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢………………………………