日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dumpbin发现没有入口函数_详解VS2019 dumpbin查看DLL的导出函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前有人問過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的导出函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。