详解VS2019 dumpbin查看DLL的导出函数

之前有人问过ViewDLL这些软件在哪下载。实际上使用VS就可以查看DLL的导出接口。

1.先打开VS内部的Power Shell

2.打开以后应该如下图所示,首先输入dumpbin查看下用法:

3.使用 /Exports 参数查看DLL的导出函数符号

顺便再讲下关于调用约定和函数符号的关系,即_stdcall,_cdecl.还有就是extern "c"对函数名符号的影响。

上面的Dll1.dll的导出头文件如下:

#pragma once

extern "C" {
//extern "C" + _stdcall,函数导出符号为 _CreateNativeManager@0 : _+函数名+@+传参字节数
//由于_stdcall是被调用方清理堆栈,所以函数符号里面包含了传参的信息
_declspec(dllexport) NativeManager* _stdcall CreateNativeManager();
_declspec(dllexport) void _stdcall ReleaseNativeManager();
_declspec(dllexport) void(_stdcall ExSetLogHandler)(LogHandler handler);
//extern "C" + _cdecl,函数导出符号为 ReleaseNativeManager2 : 函数名 
//由于_cdecl是调用方清理堆栈,所以只需要函数名就可以
_declspec(dllexport) void(_cdecl ReleaseNativeManager2)();
}
//不使用extern的情况下,是C++的导出方式,函数符号如下:
//?ReleaseNativeManager1@@YGXH@Z : ?+函数名+@@YG+返回类型+参数1类型...+@Z 
//如果是_cdecl @YG变为@YA
//如果没有参数即参数为void,则以Z结尾,例如:
//?ReleaseNativeManager3@@YAXXZ : ?+函数名+@@YA+返回类型+XZ
//以上 X表示 void类型,H表示int参数类型
_declspec(dllexport) void(_stdcall ReleaseNativeManager1)(int num);
_declspec(dllexport) void(_cdecl ReleaseNativeManager3)();

如果导入dll时发现没有找到该函数,要根据dll的导出约定方式设置对应的导入方式,否则虽然函数名一样但实际上符号是不同的。

到此这篇关于详解VS2019 dumpbin查看DLL的导出函数的文章就介绍到这了,更多相关dumpbin查看DLL的导出函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • VS2019以及MFC的安装详细教程
  • VS2019项目打包生成.exe文件与Setup的步骤实现
  • VS2019离线安装方法图文教程
  • vs2019安装和使用详细图文教程
  • VS2019简单快速的打包可安装项目(图文教程)
  • VS2019打包WPF安装程序最新教程(图文详解)
  • vs2019生成dll并调用的实现示例
  • VS2019使用快捷键将代码对齐的方法
  • 详解Visual Studio 2019(VS2019) 基本操作
  • VS2019下opencv4.1.2配置图文教程(永久配置)
  • VS2019连接mysql8.0数据库的教程图文详解
  • Visual Studio 2019安装使用C语言程序(VS2019 C语言)
  • VS2019中CMake项目的简单使用方法

转载请注明出处:http://www.syxf119.net/article/20230327/126205.html