博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 编写的DLL导出的函数名乱码含义解析
阅读量:4677 次
发布时间:2019-06-09

本文共 827 字,大约阅读时间需要 2 分钟。

C++编译时函数名修饰约定规则:

    

   __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"。

  

  如果要用DEF文件输出一个"C++"类,则把要输出的数据和成员的修饰名都写入.def模块定义文件

转载于:https://www.cnblogs.com/xingboy/p/11161680.html

你可能感兴趣的文章
关于手机端IOS系统微信中虚拟键盘遮挡input输入框问题的解决方案 草稿
查看>>
css3背景、边框、和补丁相关属性 (二)
查看>>
Python--小功能应用
查看>>
别做操之过急的”无效将军”,做实实在在的”日拱一卒”
查看>>
js去除范围内所有标签并显示指定字符串
查看>>
结对项目进度2
查看>>
git + git flow 的简单介绍
查看>>
如果我们想要交换两个数字,就可以使用位运算
查看>>
求给出第 K个 N位二进制数,该二进制数不得有相邻的“1”
查看>>
P1059 明明的随机数【去重排序】
查看>>
HDU 1060 Leftmost Digit【log10/求N^N的最高位数字是多少】
查看>>
tomcat配置文件web.xml与server.xml解析--重要
查看>>
【C语言】《C Primer Plus》递归:以二进制形式输出整数
查看>>
使用框架的——好处
查看>>
如此大量的代码,但每个类里面的代码却不显得特别多,原因。。。。。。。。。。。。...
查看>>
C#特征备忘
查看>>
Java 面向对象 之 final 关键字
查看>>
Contact Form 7邮件发送失败的解决办法
查看>>
P1800 software_NOI导刊2010提高(06)
查看>>
Python学习日记(1)使用if __name__ == "main"
查看>>