dll匯出方式
阿新 • • 發佈:2018-11-17
在一個dll工程中,想要匯出某些函式,那麼就必須給程式標記清楚,程式才會這樣去做。
如果要想匯出一個函式,那麼,有如下兩種方式:
1、在函式宣告時候,在函式前面加上 __declspec(dllexport),如下:
#ifdef __cplusplus
extern "C"{
#endif
__declspec(dllexport) 返回值型別 函式名(函式引數);
#ifdef __cplusplus
}
#endif
extern "C" 部分,最好加上,這樣匯出的函式名就是上面寫的這個函式名了,你可以用dll檢視器,看一下加extern "C" 與不加時dll中函式名情況。
2、寫 .def 檔案,我用的是VS2010,首先需要寫一個.def檔案,直接用記事本寫就行,寫好改成 .def字尾即可。
.def檔案中內容格式如下:
LIBRARY 你要匯出的庫名字(不要字尾)
EXPORTS
函式名1;
函式名2;
其中,EXPORTS後面的函式名,相當於告訴了程式,我要匯出如下這些函式;
寫好檔案後把檔案新增到工程中,並在專案——屬性——連結器——輸入——模組定義檔案處,將剛才寫好的這個def填進去,就可以了。
上面兩種dll匯出方式只用其中一種就可以了,如果當同時使用兩種方式時,def檔案最終生效。
當匯出函式有__stacall 識別符號修飾時,採用方式1匯出的函式名仍會發生變化,採用方式2就是正常的。