詳解VS2019 dumpbin查看DLL的導(dǎo)出函數(shù)
之前有人問(wèn)過(guò)ViewDLL這些軟件在哪下載。實(shí)際上使用VS就可以查看DLL的導(dǎo)出接口。
1.先打開(kāi)VS內(nèi)部的Power Shell
2.打開(kāi)以后應(yīng)該如下圖所示,首先輸入dumpbin查看下用法:
3.使用 /Exports 參數(shù)查看DLL的導(dǎo)出函數(shù)符號(hào)
順便再講下關(guān)于調(diào)用約定和函數(shù)符號(hào)的關(guān)系,即_stdcall,_cdecl.還有就是extern "c"對(duì)函數(shù)名符號(hào)的影響。
上面的Dll1.dll的導(dǎo)出頭文件如下:
#pragma once extern "C" { //extern "C" + _stdcall,函數(shù)導(dǎo)出符號(hào)為 _CreateNativeManager@0 : _+函數(shù)名+@+傳參字節(jié)數(shù) //由于_stdcall是被調(diào)用方清理堆棧,所以函數(shù)符號(hào)里面包含了傳參的信息 _declspec(dllexport) NativeManager* _stdcall CreateNativeManager(); _declspec(dllexport) void _stdcall ReleaseNativeManager(); _declspec(dllexport) void(_stdcall ExSetLogHandler)(LogHandler handler); //extern "C" + _cdecl,函數(shù)導(dǎo)出符號(hào)為 ReleaseNativeManager2 : 函數(shù)名 //由于_cdecl是調(diào)用方清理堆棧,所以只需要函數(shù)名就可以 _declspec(dllexport) void(_cdecl ReleaseNativeManager2)(); } //不使用extern的情況下,是C++的導(dǎo)出方式,函數(shù)符號(hào)如下: //?ReleaseNativeManager1@@YGXH@Z : ?+函數(shù)名+@@YG+返回類(lèi)型+參數(shù)1類(lèi)型...+@Z //如果是_cdecl @YG變?yōu)锧YA //如果沒(méi)有參數(shù)即參數(shù)為void,則以Z結(jié)尾,例如: //?ReleaseNativeManager3@@YAXXZ : ?+函數(shù)名+@@YA+返回類(lèi)型+XZ //以上 X表示 void類(lèi)型,H表示int參數(shù)類(lèi)型 _declspec(dllexport) void(_stdcall ReleaseNativeManager1)(int num); _declspec(dllexport) void(_cdecl ReleaseNativeManager3)();
如果導(dǎo)入dll時(shí)發(fā)現(xiàn)沒(méi)有找到該函數(shù),要根據(jù)dll的導(dǎo)出約定方式設(shè)置對(duì)應(yīng)的導(dǎo)入方式,否則雖然函數(shù)名一樣但實(shí)際上符號(hào)是不同的。
到此這篇關(guān)于詳解VS2019 dumpbin查看DLL的導(dǎo)出函數(shù)的文章就介紹到這了,更多相關(guān)dumpbin查看DLL的導(dǎo)出函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++按照正態(tài)分布來(lái)排列整型數(shù)組元素
這篇文章主要介紹了C++按照正態(tài)分布來(lái)排列整型數(shù)組元素的相關(guān)資料,需要的朋友可以參考下2016-07-07C++四種強(qiáng)制轉(zhuǎn)換原理與價(jià)值
這篇文章主要介紹了C++的四種強(qiáng)制轉(zhuǎn)換原理與價(jià)值,文中介紹的非常詳細(xì),對(duì)學(xué)習(xí)C語(yǔ)言有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2023-04-04c++11中regex正則表達(dá)式示例簡(jiǎn)述
這篇文章主要給大家介紹了關(guān)于c++11中regex正則表達(dá)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c++11具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Qt實(shí)現(xiàn)界面滑動(dòng)切換效果的思路詳解
這篇文章主要介紹了Qt實(shí)現(xiàn)界面滑動(dòng)切換效果,主要包括設(shè)計(jì)思路及主要函數(shù)講解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07QT+ffmpeg實(shí)現(xiàn)視頻解析的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用QT+ffmpeg實(shí)現(xiàn)視頻解析功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定幫助,需要的可以參考一下2022-09-09C++實(shí)現(xiàn)LeetCode(83.移除有序鏈表中的重復(fù)項(xiàng))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(83.移除有序鏈表中的重復(fù)項(xiàng)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++11 thread多線(xiàn)程編程創(chuàng)建方式
這篇文章主要介紹了C++11 thread多線(xiàn)程編程的相關(guān)知識(shí),包括線(xiàn)程的創(chuàng)建方式結(jié)束方式及互斥鎖的實(shí)例代碼詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12