我有一個使用CMake作爲編譯系統的共享庫。它使用GCC在Linux機器上編譯得很好。現在我正試圖在Windows上編譯。直到指定MSVC纔會導出符號。我知道關於__declspec(dllexport)
。但是CMake wiki中提供的例子令人困惑。請考慮下面的代碼。編譯DLL時導出符號 - MSVC
#if defined (_WIN32)
#if defined(MyLibrary_EXPORTS)
#define MYLIB_EXPORT __declspec(dllexport)
#else
#define MYLIB_EXPORT __declspec(dllimport)
#endif /* MyLibrary_EXPORTS */
#else /* defined (_WIN32) */
#define MYLIB_EXPORT
#endif
我明白__declspec(dllexport)
但不知道爲什麼__declspec(dllimport)
使用?另外我該如何使用它?它是否像MYLIB_EXPORT void function()
?
考慮我有C函數名爲foo()
。這在內部使用幾個static
函數。導出時,我還需要導出靜態函數嗎?或者僅僅導出屬於API的入口函數就足夠了?
任何幫助,將不勝感激。
非常感謝你 – 2010-11-25 11:40:44