3

当我尝试将我的 Win32 代码从 Microsoft 工具链移植到 MinGW 时,大多数代码都能正常编译,但很少有例外。MinGW 中似乎缺少的一个特定 API 是SList API(包括 InitializeSListHead、InterlockedPushEntrySList) - 当我编译我的源代码时,我收到关于未定义这些函数的错误。我该怎么做才能让这个 API 在 MinGW 下可用?是否有一些我可以更新的 Win32 SDK 或类似的东西?

4

3 回答 3

4

当前的 MinGW(基于 GCC 4.6.2)已经包含 SList API,但您需要通过定义预处理器值 _WIN32_WINNT =0x0501 或更高(这表示带有 SP1 的 Windows Server 2003、Windows XP )来表明您正在为支持它的 Windows 目标进行编译与 SP2)。

于 2012-05-22T14:06:05.997 回答
0

访问http://equation.com并使用最新的 gcc 4.8+ 下载他们完美的 MinGW 构建

从 winbase.h(在等式的 MinGW/include 中):

#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_ */
于 2012-05-22T11:12:37.797 回答
0

QueryDepthSList(); 4.7.1 标头中缺少。其他功能在那里。

于 2012-11-01T09:25:00.757 回答