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

所属分类: 软件编程 / C 语言 阅读数: 154
收藏 0 赞 0 分享

之前有人问过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的导出约定方式设置对应的导入方式,否则虽然函数名一样但实际上符号是不同的。

更多精彩内容其他人还在看

深入解析C++中派生类的构造函数

这篇文章主要介绍了深入解析C++中派生类的构造函数,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

解析C++中多层派生时的构造函数及一些特殊形式

这篇文章主要介绍了解析C++中多层派生时的构造函数及一些特殊形式,特殊形式主要针对基类和子对象类型的构造函数内容,需要的朋友可以参考下
收藏 0 赞 0 分享

简单介绍C++编程中派生类的析构函数

这篇文章主要介绍了C++编程中派生类的析构函数,析构函数平时一般使用较少,需要的朋友可以参考下
收藏 0 赞 0 分享

深入解析C++中类的多重继承

这篇文章主要介绍了深入解析C++中类的多重继承,包括多重继承相关的二义性问题,需要的朋友可以参考下
收藏 0 赞 0 分享

详解C++中基类与派生类的转换以及虚基类

这篇文章主要介绍了详解C++中基类与派生类的转换以及虚基类,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

解析C++编程中的继承方面的运用

这篇文章主要介绍了解析C++编程中的继承方面的运用,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

详解C++编程的多态性概念

这篇文章主要介绍了C++编程的多态性概念,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

c++统计文件中字符个数代码汇总

本文给大家汇总介绍了3种使用C++实现统计文件中的字符个数的方法,非常的简单实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

详解C++编程中的虚函数

这篇文章主要介绍了详解C++编程中的虚函数,包括在什么情况下应当声明虚函数的相关讲解,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言putenv()函数和getenv()函数的使用详解

这篇文章主要介绍了C语言putenv()函数和getenv()函数的使用详解,用来进行环境变量的相关操作,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多