一般DLL裡面的函式在header裡面都會這樣宣告:
#ifdef BUILDDLL
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif
然後將各函式宣告成這樣:
DLL int dosomething(int);
我發現同事寫的一個DLL函式,在app端把方向弄反,直接寫死成:
__declspec(dllexport) int dosomething(int);
不過卻發現沒出現任何錯誤。
MSDN裡面提到:
(https://msdn.microsoft.com/zh-tw/library/twa2aw10.aspx)
「如果您宣告的函式或物件具有 dllexport 屬性,則其定義必須出現在相同程式
的一些模組中。 否則會產生連結器錯誤。」
感覺有點怪怪的... 這樣沒問題嗎?