DLL exported function names written in C ++ garbled meaning resolve

C ++ compiler when the function name modified rules of engagement:

    
   __stdcall calling convention:    

    "?" 1, in order to identify the beginning of the function name, followed by the function name;   
    2, after the function name to start the "@@ YG" identifies the parameter list, followed by the parameter list;  
    3, the code represents the parameter list:    
      the X-- void 
      D --char 
      E - unsigned char 
      F. - Short 
      H - int 
      the I - unsigned int 
      J - Long 
      K - unsigned Long 
      M - a float 
      N - Double 
      _N - BOOL 
      ....    
      PA - represents pointer, the back pointer indicating the type of the code, if the same type of consecutive pointer to "0" instead of a "0" represents the first iteration;    
    4, the first parameter table for the return type of the function, followed by the data type of the parameter pointer identifies the type of data to which it refers before;    
    5, after the parameter table to "@Z" end of the whole identification name, if the function has no parameters, places the end of the "Z" logo.

    
  The format is "? Functionname @@ YG ***** @ Z" or "? Functionname @@ YG * XZ",

   For example:  
                      ? Test1 int (char * var1, unsigned Long) ----- Test1 @@ @ the Z-YGHPADK

                      void Test2()-----"?Test2@@YGXXZ" 


  __cdecl calling convention:    
    rule calling convention with the above _stdcall, is just the beginning of a table identifies the parameters above "@@ YG" becomes "@@ YA".    


  __fastcall calling convention:    
  rule calling convention with the above _stdcall, is just the beginning of a table identifies the parameters above "@@ YG" becomes "@@ YI".

  

  If you use a DEF file output "C ++", post the data to be output and modifications are written to members of the .def module definition file

Guess you like

Origin www.cnblogs.com/xingboy/p/11161680.html