之前有人问过ViewDLL这些软件在哪下载。实际上使用VS就可以查看DLL的导出接口。
1。先打开VS内部的电源外壳
2。打开以后应该如下图所示,首先输入dumpbin查看下用法:
3。使用/出口参数查看DLL的导出函数符号
顺便再讲下关于调用约定和函数符号的关系,即_stdcall, _cdecl。还有就是外来的“c”对函数名符号的影响。
上面的Dll1.dll的导出头文件如下:
# pragma一旦 外来的“C”{//外面的“C”+ _stdcall函数导出符号为_CreateNativeManager@0: _ +函数名+ @ +传参字节数//由于_stdcall是被调用方清理堆栈,所以函数符号里面包含了传参的信息 _declspec (dllexport) NativeManager * _stdcall CreateNativeManager (); _declspec (dllexport)无效_stdcall ReleaseNativeManager (); _declspec (dllexport)空(_stdcall ExSetLogHandler) (LogHandler处理程序);//外面的“C”+ _cdecl函数导出符号为ReleaseNativeManager2:函数名//由于_cdecl是调用方清理堆栈,所以只需要函数名就可以 _declspec (dllexport)空(_cdecl ReleaseNativeManager2) (); }//不使用走读生的情况下,是c++的导出方式,函数符号如下://& # 63;ReleaseNativeManager1@@YGXH@Z: & # 63; +函数名+ @@YG +返回类型+参数1类+ @Z型…//如果是_cdecl @YG变为@YA//如果没有参数即参数为空白,则以Z结尾,例如://& # 63;ReleaseNativeManager3@@YAXXZ: & # 63; +函数名+ @@YA +返回类型+ XZ//以上X表示空白类型、H表示int参数类型 _declspec (dllexport)空(_stdcall ReleaseNativeManager1) (int num); _declspec (dllexport)空(_cdecl ReleaseNativeManager3) ();
如果导入dll时发现没有找到该函数,要根据dll的导出约定方式设置对应的导入方式,否则虽然函数名一样但实际上符号是不同的。
到此这篇关于详解VS2019 dumpbin查看DLL的导出函数的文章就介绍到这了,更多相关dumpbin查看DLL的导出函数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!