本文主要介绍VS2019 dumpbin视图DLL的导出功能的详细说明。文章通过示例代码非常详细,对大家的学习或者工作都有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。
之前有人问ViewDLL在哪里下载这些软件。其实可以用VS查看DLL的导出接口。
1.先打开VS里面的动力壳。
2.打开后,应该如下图所示。首先,输入dumpbin来检查用法:
3.使用/Exports参数查看DLL的导出函数符号。
顺便说一下调用约定和函数符号的关系,即_stdcall,_cdecl。以及extern 'c '对函数名符号的影响。
上述Dll1.dll的导出头文件如下:
#杂注一次
外部' C' {
//extern 'C' _stdcall,函数导出符号为_ CreateNativeManager @ 0:_ function name @传递的字节数。
//因为_stdcall是被调用者清零的堆栈,所以函数符号中包含了参数传递的信息。
_ declspec(dll export)native manager * _ stdcall CreateNativeManager();
_ declspec(dll export)void _ stdcall ReleaseNativeManager();
_ declspec(dll export)void(_ stdcall ExSetLogHandler)(log handler处理程序);
//extern 'C' _cdecl,函数导出符号为ReleaseNativeManager2:函数名。
//由于_cdecl是调用者的清理堆栈,所以只需要函数名。
_ declspec(dll export)void(_ cdecl releasenativemanager 2)();
}
//不使用extern,是c的导出方法,函数符号如下:
//?ReleaseNativeManager1@@YGXH@Z:函数名@@YG返回类型参数1 type.@Z
//如果是_cdecl @YG,就变成@YA
//如果没有参数,即参数为void,则以Z结尾,例如:
//?ReleaseNativeManager3@@YAXXZ:函数名@@YA返回类型XZ。
//上面的X表示void类型,H表示int参数类型
_ declspec(dll export)void(_ stdcall releasenativemanager 1)(int num);
_ declspec(dll export)void(_ cdecl releasenativemanager 3)();
如果在导入dll时发现没有找到函数,应该根据dll的导出约定设置相应的导入方法。否则,虽然函数名称相同,但符号实际上是不同的。
关于VS2019 dumpbin查看DLL的导出函数的详细说明本文到此为止。有关dumpbin查看DLL的导出功能的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。