有三種方法可以在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...