3

Win32 コードを Microsoft ツールチェーンから MinGW に移植しようとすると、ほとんどのコードは正常にコンパイルされますが、例外はほとんどありません。MinGW に欠けていると思われる特定の API の 1 つはSList API (InitializeSListHead、InterlockedPushEntrySList を含む) です。ソースをコンパイルすると、これらの関数が定義されていないというエラーが表示されます。この API を MinGW で使用できるようにするにはどうすればよいですか? 更新できるWin32 SDKなどはありますか?

4

3 に答える 3

4

現在の MinGW (GCC 4.6.2 に基づく) には既に SList API が含まれていますが、プリプロセッサ値 _WIN32_WINNT =0x0501 以上を定義することによって、それをサポートする Windows ターゲット用にコンパイルしていることを示す必要があります(これは、SP1 を適用した Windows Server 2003、Windows XP を示します)。 SP2 を使用)。

于 2012-05-22T14:06:05.997 に答える
0

QueryDepthSList(); 4.7.1ヘッダーにありません。他の機能はそこにあります。

于 2012-11-01T09:25:00.757 に答える
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 に答える