VC生成的dll中匯出函式名三種方法

2021-06-07 18:15:47 字數 466 閱讀 1808

有三種方法可以在vc生成的dll中匯出原始函式名稱:

1. 使用.def檔案

這個方法通用性最好,建議使用。

2. 使用#pragma comment(linker, ......)

該方法受限於vc的編譯器,x86和x64的編譯器編譯出來的函式名稱是不一樣的。因此需要根據這兩種編譯器分別編寫pragma。靈活性較差。

如: int add(int *a); 該函式在x86上生成的函式名字為:_add@4, 而在x64編譯器上生成的函式名字則為:_add@8。

3. 函式以extern "c"修飾,引數呼叫規則使用預設或cdecl(最起碼不可以是stdcall)

如 extern "c"

__declspec(dllexport)

int [

cdecl] add(

int, int);

該方法限定性較大,用起來比較死板,但省卻了.def。

關於Dll 匯出函式名 ZZ

使用dependency看dll的匯出函式的名字,會發現有一些有意思的東西,這大多是和編譯dll時候指定dll匯出函式的匯出符有關係。當你使用extern c 的情況下 stdcall會使匯出函式名字前面加乙個下劃線,後面加乙個 再加上引數的位元組數,比如 fun 4就是4個位元組 fastcall...

dll 匯出函式名的那些事

關鍵字 vc dll 匯出函式 經常使用vc6的dependency檢視dll匯出函式的名字,會發現有dll匯出函式的名字有時大不相同,導致不同的原因大多是和編譯dll時候指定dll匯出函式的界定符有關係。vc 支援兩種語言 即c c 這也是造成dll匯出函式差異的根源 我們用vs2008新建個dl...

dll 匯出函式名的那些事

經常使用vc6的dependency檢視dll匯出函式的名字,會發現有dll匯出函式的名字有時大不相同,導致不同的原因大多是和編譯dll時候指定dll匯出函式的界定符有關係。vc 支援兩種語言 即c c 這也是造成dll匯出函式差異的根源 我們用vs2008新建個dll工程,工程名為 testdll...