2012-05-22 24 views
3

當我嘗試將我的Win32代碼從Microsoft工具鏈移植到MinGW時,大多數代碼編譯都很好,但很少有例外。似乎在MinGW中缺少的一個特定的API是SList API(包括InitializeSListHead,InterlockedPushEntrySList) - 當我編譯我的源代碼時,出現有關未定義這些函數的錯誤。我能做些什麼來在MinGW下使用此 API?是否有一些我可以更新的Win32 SDK,或者類似的東西?MinGW聯鎖單鏈表(SList)

+2

我推薦[Mingw-w64](http://mingw-w64.sourceforge.net/),它比mingw有更完整的庫。 –

回答

4

當前MinGW的(基於GCC 4.6。 2)已包含SList API,但您需要指出您正在爲支持它的Windows目標編譯defining a preprocessor value _WIN32_WINNT = 0x0501或更高版本(表示Windows Server 2003 SP1,Windows XP SP2)。

0

轉到http://equation.com和下載自己的完美MinGW的建立與(/包括方程的MinGW的)最新的gcc 4.8+

從WINBASE.H:

#if defined(_SLIST_HEADER_) && !defined(_NTOSP_) 
    WINBASEAPI VOID WINAPI InitializeSListHead(PSLIST_HEADER ListHead); 
    WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER ListHead); 
    WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER ListHead,PSLIST_ENTRY ListEntry); 
    WINBASEAPI PSLIST_ENTRY WINAPI InterlockedFlushSList(PSLIST_HEADER ListHead); 
    WINBASEAPI USHORT WINAPI QueryDepthSList(PSLIST_HEADER ListHead); 
#endif /* _SLIST_HEADER_ && !_NTOSP_ */ 
+0

請不要推薦GCC開發版本。 – rubenvb

+0

我已經檢查了它們的最後一個穩定版本(基於4.7),並且它已經包含SList API(如果此MinGW發行版需要_WIN32_WINNT,我沒有嘗試)。 – Suma

+0

甚至更​​多,它已經在4.6.0 –

0

012.從4.7.1頭部丟失。其他功能在那裏。