先看一段宏
#ifdef HSCRIPTDEBUG_EXPORTS
#define HSCRIPTDEBUG_API __declspec(dllexport)
#else
#define HSCRIPTDEBUG_API __declspec(dllimport)
#endif
class HSCRIPTDEBUG_API ScriptDebug

{
public:

};
__declspec(dllexport)用于導(dǎo)出符號(hào),也就是定義該函數(shù)的dll;
__declspec(dllimport)用于導(dǎo)入,也就是使用該函數(shù)。
因?yàn)檫@個(gè)頭文件既要被定義該函數(shù)的dll包含,也要被使用該函數(shù)的程序包含,當(dāng)被前者包含時(shí)我們希望使用__declspec(dllexport)定義函數(shù),當(dāng)被后者包含時(shí)我們希望使用dllimport。于是我們使用
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif
這種技巧,在定義該函數(shù)的dll中,其編譯選項(xiàng)定義了_EXPORTING而使用該函數(shù)的程序則沒有定義。
__declspec(dllimpot)如果要是類中有靜態(tài)變量的話,是必須有這個(gè)的。













__declspec(dllimport)用于導(dǎo)入,也就是使用該函數(shù)。
因?yàn)檫@個(gè)頭文件既要被定義該函數(shù)的dll包含,也要被使用該函數(shù)的程序包含,當(dāng)被前者包含時(shí)我們希望使用__declspec(dllexport)定義函數(shù),當(dāng)被后者包含時(shí)我們希望使用dllimport。于是我們使用
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif
這種技巧,在定義該函數(shù)的dll中,其編譯選項(xiàng)定義了_EXPORTING而使用該函數(shù)的程序則沒有定義。
__declspec(dllimpot)如果要是類中有靜態(tài)變量的話,是必須有這個(gè)的。