1. 程式人生 > >dll匯出方式

dll匯出方式

在一個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就是正常的。