C++ 编写的DLL导出的函数名乱码含义解析
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模块定义文件
C++ 编写的DLL导出的函数名乱码含义解析的更多相关文章
- VS2015 编写C++的DLL,并防止DLL导出的函数名出现乱码(以串口通信为例,实现串口通信)
		
参考链接:https://blog.csdn.net/songyi160/article/details/50754705 1.新建项目 建立好的项目界面如下: 接着在解决方案中找到[头文件]然后右击 ...
 - C++ 动态库导出函数名“乱码”及解决
		
C++ 动态库导出函数名“乱码”及解决 刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都“乱码”了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // ...
 - 【图文】[新手]C++ 动态库导出函数名“乱码”及解决
		
刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都"乱码"了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // 下列 ifdef ...
 - dll的概念 dll导出变量 函数 类
		
1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接 ...
 - Windows下程序打包发布时的小技巧(使用Dependency Walker侦测不理想,改用VS自带的dumpbin则万无一失,还可查看dll导出的函数)
		
Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作的博客,里 ...
 - lua调用dll导出的函数
		
参考手册 hello.dll #include "pch.h" #include "lua.hpp" #pragma comment(lib, "lu ...
 - dll 导出函数名的那些事
		
dll 导出函数名的那些事 关键字: VC++ DLL 导出函数 经常使用VC6的Dependency或者是Depends工具查看DLL导出函数的名字,会发现有DLL导出函数的名字有时大不相同,导 ...
 - MinGW g++.exe 编译 DLL 时,导出函数名带@的问题
		
今天尝试用CodeBlocks写了一个简单的Dll,发现生成的 dll 文件导出的函数名后面都有一个 @xxx 从生成的 libDll2.def 中看到: EXPORTS DllMain@ @ Max ...
 - C# 遍历DLL导出函数
		
C#如何去遍历一个由C++或E语言编写的本地DLL导出函数呢 不过在这里我建议对PE一无所知的人 你或许应先补补这方面的知识,我不知道为什么PE方面的 应用在C#中怎么这么少,我查阅过相关 C#的知识 ...
 
随机推荐
- Spring MVC-学习笔记(5)spring MVC的文件上传、下载、拦截器
			
1.文件上传. spring MVC为文件上传提供了直接的支持,这种支持是即插即用的MultipartResolver(多部分解析器)实现的.spring MVC使用Apache Commo ...
 - ubuntu终端代理之proxychains
			
命令行代理 安装proxychains sudo apt install proxychains 配置proxychains sudo vim /etc/proxychains.conf 在proxy ...
 - 以区间DP为前提的【洛谷p1063】能量项链
			
(跑去练习区间DP,然后从上午拖到下午qwq) 能量项链[题目链接] 然后这道题也是典型的区间DP.因为是项链,所以显然是一个环,然后我们可以仿照石子合并一样,把一个有n个节点的环延长成为有2*n个节 ...
 - B.Petr and a Combination Lock
			
https://codeforces.com/contest/1097/problem/A Petr and a Combination Lock time limit per test 1 seco ...
 - C# 反射实现动态加载程序集
			
原文:https://blog.csdn.net/pengdayong77/article/details/47622235 在.Net 中,程序集(Assembly)中保存了元数据(MetaData ...
 - jquery 使用a标签导航栏跳转页面,动态添加高亮
			
众所周知,使用a标签跳转之后,会刷新一次,继而这个添加的样式就会消失.那么怎么解决这一问题呢? <script> $(function () { $('.bar a').each(func ...
 - [冲昏头脑]IDEA中的maven项目中学习log4j的日志操作
			
第一,你要有log4j的对应的包,由于我用的maven,所以直接在pom.xml文件依赖下载则可,如你尚为有此包,请自行百度下载导入,或上http://www.mvnrepository.com/搜索 ...
 - Conference - open source drives IOT from device to edge
			
Open source drives IOT from device to edge 以下都是针对IOT领域的项目: ACRN A Big Little Hypervisor for IoT Deve ...
 - Android Studio使用阿里云Aliyun Maven仓库
			
如下所示,在build.gradle中添加Aliyun Maven仓库 // Top-level build file where you can add configuration options ...
 - 随笔2 AbstractMap<K,V>
			
上一篇写了Map接口的源码分析,这一篇写一下Map接口的一个实现类AbstractMap,从名字就可以看出这是一个抽象类,提供了Map接口的骨架实现,为我们实现Map接口的时候提供了很大的便利.在这里 ...