之前有人问过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的导出函数内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

原文链接:https://blog.csdn.net/luoyu510183/article/details/93666808

dumpbin发现没有入口函数_详解VS2019 dumpbin查看DLL的导出函数相关推荐

  1. python中延时函数_详解python中实现延时回调普通函数

    这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 前言 ...

  2. C语言 -- string.h中函数功能详解与手动实现 - 02(常用函数memcpy、memmove、strcpy、strdup、strcat、strtok...)

    内容预览 3.5.搬迁类型 --- 函数功能详细说明 :将内存空间中内容移动.复制到另一内存空间 3.6.搬迁类型 --- 函数功能测试与手动实现 3.6.1.memcpy.memccpy 3.6.2 ...

  3. 不用工具查看dll的导出函数名的方法!

    用记事本打开dll文件,用dll的文件名(如:mydll.dll)查找,文件名后面就是dll的导出函数名了.

  4. python 减法函数_详解 Python 的二元算术运算,为什么说减法只是语法糖?

    大家对我解读属性访问的博客文章反应热烈,这启发了我再写一篇关于 Python 有多少语法实际上只是语法糖的文章.在本文中,我想谈谈二元算术运算. 具体来说,我想解读减法的工作原理:a - b.我故意选 ...

  5. python while函数_详解python while 函数及while和for的区别

    1.while循环(只有在条件表达式成立的时候才会进入while循环) while 条件表达式: pass while 条件表达式: pass else: pass 不知道循环次数,但确定循环条件的时 ...

  6. python中index函数_详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...

  7. python闭包详解函数_详解python函数的闭包问题(内部函数与外部函数详述)

    python函数的闭包问题(内嵌函数) >>> def func1(): ... print ('func1 running...') ... def func2(): ... pr ...

  8. mysql数据库的函数_详解数据库_MySQL: mysql函数

    一.内置函数 1.数学函数 rand() round(num) ceil(num) floor(num) 随机 四舍五入 向上取整 向下取整 2.字符串函数 length() 字节长度 char_le ...

  9. python中squeeze函数_详解pytorch中squeeze()和unsqueeze()函数介绍

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

最新文章

  1. pytorch中如何处理RNN输入变长序列padding
  2. java 取整型的低八位_Java 基础(十五)并发工具包 concurrent
  3. python如何读取mat文件可视化_python Matplotlib数据可视化(1):简单入门
  4. C++中函数调用操作符的重载
  5. wamp配置多少站点
  6. C语言:(旧)用字符串自由输入计算的计算器(加减乘除)
  7. MvcMusicStore学习中常出现的一个BUG
  8. 【原】一张图片优化5K的带宽成本
  9. C++标准库分析总结(一)
  10. metasploit(十)漏洞攻击exploit代码编写
  11. 记录一下QT下载安装及相关说明
  12. Google SketchUp Cookbook: (Chapter 3) Intersection Edges: Cutting and Trimming
  13. Unity 打图集Atlas
  14. 快速加速计算机的方法,电脑慢的快速解决办法 四种方法电脑速度变快10倍
  15. SSD-主控、闪存和固件(转)
  16. VBA小模板,跨表统计的2种写法
  17. autocad显卡驱动文件hdi_AUTOCAD启动提示显示驱动文件丢失怎么办?hdi是什么文件?...
  18. Hadoop面试连环炮
  19. 英语单词积累8.10
  20. 22nd Century向FDA递交该公司极低尼古丁含量香烟的改良风险烟草产品(MRTP)申请

热门文章

  1. 人脸识别数据集精粹(下)
  2. ARM NEON指令集优化理论与实践
  3. SyntaxError: Non-ASCII character ‘\xe4‘ in file xx(路径)
  4. Android 自定义Dialog 的使用
  5. 微信小程序时间戳转化为时间
  6. tp5+workman
  7. STM32F0使用LL库实现Modbus通讯
  8. Linux学习之三-Linux系统的一些重要配置文件
  9. JavaScript时间日期格式化
  10. 命令行收集(DOS/Linux/nc/xscan/xsniffer)