1. 程式人生 > >dll匯出函式符號含義

dll匯出函式符號含義

DLL中匯出類成員函式名稱修飾意思解釋大全

2、C++編譯時函式(非類成員函式)名稱修飾 當函式使用__cdecl呼叫約定時,編譯器進行以下工作: 1.以?標識函式名的開始,後跟函式名; 2.函式名後面以@@YA標識開始,後跟返回值和引數表; 3.當函式的返回值或者引數與C++類無關的時候,返回值和引數表以下列代號表示:        B:const D:char E:unsigned char F:short G:unsigned short H:int I:unsigned int J:long K:unsigned long M:float N:double _N:bool PA:指標(*,後面的代號表明指標型別,如果相同型別的指標連續出現,以0代替,一個0代表一次重複) PB:const指標 AA:引用(&) AB:const引用 U:類或結構體 V:Interface(介面) W4:enum X:void 4、@@YA標識之後緊跟的是該函式的返回值型別,其後依次為引數的資料型別,指標標識在其所指資料型別前。當函式的返回值或者引數與C++類無關的時候,其處理符合本條規則,否則按照5、6規則處理; 5、當函式返回值為某個類或帶有const性質的類的時候,返回值的命名為:?A/?B+V+類名
[email protected]
@(不帶加號)。當函式返回值為某個類的指標/引用或者帶有const性質的類的指標/引用的時候,返回值的命名為:PA/AA或者PB/AB+V+類名[email protected]@(不帶加號); 6、函式引數為某個類的時候,並且該引數所使用的類曾經出現過的話(也就是與函式返回值所使用的類相同或者與前一個引數使用的類相同),則該引數型別格式為:[email protected](不帶加號)。如果該引數所使用的類沒有出現過的話,則該引數型別格式為:V+類名[email protected]@(不帶加號)。函式引數為某個類的指標/引用或者帶有const性質指標/引用的時候,則該引數型別格式是在上述格式的基礎上在V前面加上代表指標/引用型別或者帶有const性質指標/引用型別的識別符號(PA/AA或PB/AB); 7、引數表後以@Z標識整個名字的結束,如果該函式無引數,則以Z標識結束。 當函式使用__stdcall呼叫約定時,編譯器所做工作的規則同上面的__cdecl呼叫約定,只是引數表的開始標識由上面的@@YA變為@@YG。 當函式使用__fastcall呼叫約定時,編譯器所做工作的規則同上面的__cdecl呼叫約定,只是引數表的開始標識由上面的@@YA變為@@YI。 3、C++編譯類及其成員函式時名稱修飾
       對於匯出的C++類,僅能使用__cdecl呼叫約定。在編譯器編譯過程中,編譯器會對C++類進行處理。如:class __declspec(dllexport) MyClass會被處理為class MyClass & MyClass::operator=(class MyClass const &)。在C++編譯器對C++類進行名稱修飾的時候,編譯器進行以下工作: 1.以?標識函式名的開始,後跟?4+類名; 2.類名後面跟@@QAE標識,對於匯出類來說這是固定的; 3.@@QAE後面跟[email protected]@,即引用型別識別符號AA+V+0(重複的類的識別符號)
[email protected]
(不帶加號)和const性質的引用AB+V+ 0(重複的類的識別符號)[email protected](不帶加號); 4.最後以@Z標識整個名字的結束。        對於匯出的C++類中的成員函式(非建構函式和解構函式),可以使用不同的呼叫約定。當匯出的C++類中的成員函式使用__cdecl呼叫約定時,編譯器進行以下工作: 1.以?標識函式名的開始,後跟函式名[email protected]+類名(不帶加號); 2.之後以@@QAE標識開始,後跟返回值和引數表; 3.當函式的返回值或者引數與C++類無關的時候,返回值和引數表以下列代號表示:        B:const D:char E:unsigned char F:short G:unsigned short H:int I:unsigned int J:long K:unsigned long M:float N:double _N:bool PA:指標(*,後面的代號表明指標型別,如果相同型別的指標連續出現,以0 代替,一個0代表一次重複) PB:const指標 AA:引用(&) AB:const引用 U:類或結構體 V:Interface(介面) W4:enum X:void 4、@@QAE標識之後緊跟的是該函式的返回值型別,其後依次為引數的資料型別,指標標識在其所指數 據型別前。當函式的返回值或者引數與C++類無關的時候,其處理符合本條規則,否則按照5、6規則處理; 5、當函式返回值為當前類或帶有const性質的當前類的時候,返回值的命名為:?A或[email protected]@(不帶加號)。當函式返回值為當前類的指標/引用或者帶有const性質的當前類的指標/引用的時候,返回值的命名為:PA/AA或PB/[email protected]@(不帶加號); 6、當函式返回值為某個類或帶有const性質的類的時候,返回值的命名為:?A/?B+V+類名[email protected]@(不帶加號)。當函式返回值為某個類的指標/引用或者帶有const性質的類的指標/引用的時候,返回值的命名為:PA/AA或者PB/AB+V+類名[email protected]@(不帶加號); 7、函式引數為某個類的時候,並且該引數所使用的類曾經出現過的話(也就是當前要匯出的類、與函式返回值所使用的類相同或者與前一個引數使用的類相同的類),則該引數型別格式為:[email protected](不帶加號)。如果該引數所使用的類不是當前要匯出的類的話,則該引數型別格式為:V+類名[email protected]@(不帶加號)。函式引數為某個類的指標/引用或者帶有const性質指標/引用的時候,則該引數型別格式是在上述格式的基礎上在V前面加上代表指標/引用型別或者帶有const性質指標/引用型別的識別符號(PA/AA或PB/AB); 8、引數表後以@Z標識整個名字的結束,如果該函式無引數,則以Z標識結束。 當函式使用__stdcall呼叫約定時,編譯器所做工作的規則同上面的__cdecl呼叫約定,只是引數表的開始標識由上面的@@YA變為@@YG。 當函式使用__fastcall呼叫約定時,編譯器所做工作的規則同上面的__cdecl呼叫約定,只是引數表的開始標識由上面的@@YA變為@@YI。 4、C++編譯匯出資料時名稱修飾        對於匯出的資料,僅使用__cdecl呼叫約定。在C++編譯器對C++類進行名稱修飾的時候,編譯器進行以下工作: 1.以?標識資料的開始,後跟資料名; 2.資料名後面以@@3標識開始,後跟資料型別; 3.當資料型別與C++類無關的時候,資料型別以下列代號表示:        B:const D:char E:unsigned char F:short G:unsigned short H:int I:unsigned int J:long K:unsigned long M:float N:double _N:bool PA:指標(*,後面的代號表明指標型別,如果相同型別的指標連續出現,以0 代替,一個0代表一次重複)        PB:const指標        AA:引用(&)        AB:const引用 U:類或結構體 V:Interface(介面)

W4:enum

X:void 4.如果資料型別是某個類的時候,資料型別的命名為:V+類名[email protected]@(不帶加號)。當資料型別為當前類的指標/引用或者帶有const性質的當前類的指標/引用的時候,資料型別的命名為:PA/AA或PB/AB+V+類名[email protected]@(不帶加號); 5.最後,如果資料型別是const性質,則修飾名以B結尾。如果資料型別是非const性質,則修飾名以A結尾

相關推薦

dll匯出函式符號含義

DLL中匯出類成員函式名稱修飾意思解釋大全 2、C++編譯時函式(非類成員函式)名稱修飾 當函式使用__cdecl呼叫約定時,編譯器進行以下工作: 1.以?標識函式名的開始,後跟函式名; 2.函式名後面以@@YA標識開始,後跟返回值和引數表; 3.當函式的返回

c++ dll匯出函式返回false值C#卻認為是true的處理方法

轉發網址https://stackoverflow.com/questions/1792581/c-from-c-c-function-in-a-dll-returning-false-but-c-sharp-thinks-its-tr 在C++中宣告匯出函式 bool Foo()

Dll 匯出函式那些破事

經常使用VC6的Dependency檢視DLL匯出函式的名字,會發現有DLL匯出函式的名字有時大不相同,導致不同的原因大多是和編譯DLL時候指定DLL匯出函式的界定符有關係。 VC++支援兩種語言:即C/C++,這也是造成DLL匯出函式差異的根源 我們用VS2008新建個DLL工程,工程名為

檢視DLL匯出函式的方法

VS2010中沒有了Depends工具,如何檢視DLL檔案的匯出介面呢? VS2010的操作方法如下: 1. 開啟命令列視窗CMD 2. 執行vcvarsall.bat VS2010 裡vcvarsall.bat是在右鍵VS開啟檔案位置,D:\M

VC++  DLL 匯出函式

經常使用VC6的Dependency檢視DLL匯出函式的名字,會發現有DLL匯出函式的名字有時大不相同,導致不同的原因大多是和編譯DLL時候指定DLL匯出函式的界定符有關係。 VC++支援兩種語言:即C/C++,這也是造成DLL匯出函式差異的根源 我們用VS2008新建

DLL匯出函式名稱改編的解決方法

1.DLL編譯後匯出函式名稱改編 在編寫一個DLL後,為了能被別的程式呼叫,需要將被使用的函式匯出; 但是一般的編譯器都會將到處函式名稱改編; 例如:在VC中新建一個空的win32 dll工程,然後新增下面的檔案; //dll1.h #ifdef DLL_

VS2010怎麼用Dumpbin來檢視DLL匯出函式

首先,開始->所有程式->Microsoft Visual Studio 2010->Visual Studio Tools ->“Visual Studio 命令提示(2010)” 開啟後輸入 dumpbin -exports D:\C_engin

Dll匯出函式劫持通用方法

問題發現 dll劫持是一種常見的攻擊方法,但是也可以用在不知道程式原始碼的情況下除錯dll的函式。之前在滴水教程的視訊中注意到一個問題,視訊作者演示了一個劫持messagebox函式,列印輸出引數的過程,當時學生提問是否存在一種通用的方法可以劫持所有

dll 匯出函式名的那些事

關鍵字: VC++  DLL  匯出函式  經常使用VC6的Dependency檢視DLL匯出函式的名字,會發現有DLL匯出函式的名字有時大不相同,導致不同的原因大多是和編譯DLL時候指定DLL匯出函式的界定符有關係。 VC++支援兩種語言:即C/C++,這也是造成D

使用Dumpbin命令確認dll匯出函式

首先在命令列中進入到VS的安裝目錄下,執行一個名為VCVARS32.bat的批處理程式(對於VS2013來說,該bat檔案位於\VC\bin目錄下),該檔案的作用是用來建立VC++使用的環境資訊。(注意,當在命令列介面執行VCVARS32.bat檔案後,該檔案設定的環境資訊只在當前命令列視窗生效。)

關於正則表示式的函式符號含義

re.match #從開始位置開始匹配,如果開頭沒有則無 re.search #搜尋整個字串 re.findall #搜尋整個字串,返回一個list re中的flags :可選,表示匹配模式,比如忽略大小寫,多行模式等, 具體引數為: re.I 忽略大小寫 re.L 表示特殊字符集

macos dylib 函式符號匯出控制

先上測試程式碼 dylib_test.h #ifndef _DYLIB_TEST_H_ #define _DYLIB_TEST_H_ #ifdef __cplusplus extern "C" { #endif int add(int x, int y); int sub(int x

如何檢視DLL檔案的匯出函式宣告

http://blog.csdn.net/uvbs/archive/2006/01/27/589346.aspx Depends.exe 是 Visual C++ 自帶的一個工具。它可能是我們經常使

def檔案 匯出dll過載函式

轉載地址:http://blog.163.com/very_apple/blog/static/27759236201092024110861/ 動態連結庫DLL_Sample.dll DLL_Sample.h: #ifdef TEST_API # define TEST

C#中呼叫C++的dll的引數為指標型別的匯出函式(包括二級指標的情況)

一:首先什麼是IntPtr 先來看看MSDN上說的:用於表示指標或控制代碼的平臺特定型別。這個其實說出了這樣兩個事實,IntPtr 可以用來表示指標或控制代碼、它是一個平臺特定型別。對於它的解釋,這個哥們寫的比較好:It's a class that wraps a

python字符串格式化符號含義及轉義字符含義

科學 回車 引號 span python 字符串格式化 顯示 鈴聲 數字 字符串格式化符號含義 符 號 說 明 %c 格式化字符及其ASCII碼 %s 格式化字符串 %d 格

參考文獻符號含義

社會 圖書館 參考 版本 容器 cell 申請人 數據庫 pac 一、參考文獻是對期刊論文引文進行統計和分析的重要信息源之一,在本規範中采用 GB 7714推薦的順序編碼制編排。 二、參考文獻著錄項目 a. 主要責任者 (專著作者、論文集主編、學位申報人、專

常見Linux Shell中的特殊符號含義

運算 variable help erb null 作用 pip == 不可 在Shell的實際使用中,有編程經驗的很容易上手,但稍微有難度的是shell裏面的那些個符號,各種特殊的符號在我們編寫Shell腳本的時候如果能夠用的好,往往能給我們起到事半功倍的效果,下面就羅列

字符串格式化符號含義及轉義字符含義

單引號 系統 換行 十六進制 sci body 引號 進制 回車 符號 說明 %c 格式化字符及其 ASCII 碼 %s 格式化字符串 %d 格式化整數 %o 格式化無符號八進制數 %x 格式化無符號十六進制數

核心特徵碼搜尋 獲取未匯出函式

無聊寫了下 有Bug 注意下就好啦~ #include "GetUndocumentFunctionAdress.h" #pragma warning(disable : 4047) PVOID GetCallPoint(PVOID pCallPoint) { ULONG