在c++編譯器中的dll導出c!
C風格的DLL導出函數的典型方法說到底,DLL是對應C語言的動態鏈接技術,在輸出C函數和變量時顯得方便快捷
所以寫DLL文件最典型的一種Case:不用C++的類而都是C風格的代碼
這種情況要導出函數,有兩種方式:
第一種:函數前加相應修飾符
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif
然後在每一個要導出的函數前面加EXPORT
EXPORT標識符包括儲存方式限定詞__declspec(dllexport)以及在表頭文件按C++模式編譯時附加的「C」。因爲C++編譯器會將函數的名字改變,從而導致導出函數名稱變化,用extern "C"就是爲了防止這個。C編譯器無此問題。
第二種:用def文件
LIBRARY MyDll
EXPORTS
Max
Min
其中LIBRARY語句說明該def文件是屬於相應DLL的,EXPORTS語句下列出要導出的函數名稱。我們可以在.def文件中的導出函數後加@n,如Max@1,Min@2,表示要導出的函數順序號,在進行顯式連時可以用到它。
所以寫DLL文件最典型的一種Case:不用C++的類而都是C風格的代碼
這種情況要導出函數,有兩種方式:
第一種:函數前加相應修飾符
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif
然後在每一個要導出的函數前面加EXPORT
EXPORT標識符包括儲存方式限定詞__declspec(dllexport)以及在表頭文件按C++模式編譯時附加的「C」。因爲C++編譯器會將函數的名字改變,從而導致導出函數名稱變化,用extern "C"就是爲了防止這個。C編譯器無此問題。
第二種:用def文件
LIBRARY MyDll
EXPORTS
Max
Min
其中LIBRARY語句說明該def文件是屬於相應DLL的,EXPORTS語句下列出要導出的函數名稱。我們可以在.def文件中的導出函數後加@n,如Max@1,Min@2,表示要導出的函數順序號,在進行顯式連時可以用到它。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.