Code :: Blocks 13.12を使用して、LazyFooによるSDL2.0チュートリアルに従っています。 VS2010でSDL2をリンクして実行するのに問題はありませんでしたが、IDEを変更してこのエラーに遭遇しました:
winapifamily.h:そのようなファイルまたはディレクトリはありません
すべてが正しくリンクされていると思います。プログラムにSDL2のincludeおよびlibディレクトリを指定しました。
Buildlog:(ファイルでエラーが発生しています:..\include\SDL2\SDL_platform.h)
===ビルド:SDL2_Setupでデバッグ(コンパイラー:GNU GCC Compiler)===
致命的なエラー:winapifamily.h:そのようなファイルまたはディレクトリはありません
===ビルド失敗:1エラー(s)、0警告(s)(0分(s)、0秒(s))===
ここで質問するのは初めてです。 Googleで回答を求めて、ここで既存の質問/回答を検索しましたが、問題を解決できませんでした。これも私のコードです。
マイコード:
// Using SDL and standard IO
#include <SDL.h>
#include <stdio.h>
// Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main( int argc, char* args[] )
{
// The window we'll be rendering to
SDL_Window* window = NULL;
// The surface contained by the window
SDL_Surface* screenSurface = NULL;
// Initialize SDL
if( SDL_Init( SDL_INIT_VIDEO) < 0 )
{
printf( "SDL could not initialize! SDL_GetError: %s\n", SDL_GetError() );
}
else
{
// Create window
window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
if( window == NULL )
{
printf( "Window could not be created! SDL_GetError: %s\n", SDL_GetError() );
}
else
{
// Get window surface
screenSurface = SDL_GetWindowSurface( window );
// Fill the surface white
SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF));
// Update the surface
SDL_UpdateWindowSurface( window );
// Wait two seconds
SDL_Delay( 2000 );
}
}
// Destroy window
SDL_DestroyWindow( window );
// Quit SDL subsystems
SDL_Quit();
return 0;
}
[〜#〜] update [〜#〜]:SDL 2.0.4がリリースされ、このバグの修正が含まれ、ダウンロード可能です http://libsdl.org/download-2.0.php
これはSDL 2.0.3のバグです。 SDLの次のリリースで修正がコミットされました。それまでの間、SDL_platform.hの固定コピーへのリンクは次のとおりです。
https://hg.libsdl.org/SDL/raw-file/e217ed463f25/include/SDL_platform.h
ファイルをSDL 2.0.3のinclude\SDL2 \ディレクトリにドロップして元のファイルを上書きすると、アプリは正常にコンパイルされます。
クイックフィックス。 SDL_platform.hの121行目から132行目までをコメントアウトします。エラーが発生すると、ファイルはC :: Bにロードされます。保存してビルドしてください!
その問題がありました。に行く
C:\Program Files (x86)\Windows Kits\8.0\Include\shared
見つけて winapifamily.h
、それをあなたにコピーします
..\Mingw\Include\ folder
編集: Visual Studio 2012以降のため、Windowsキットファイルがあると思います。申し訳ありません。問題を解決できてうれしいです。
ええ、問題はそのヘッダーにあります(SDL_plataform.hバージョンSDL 2.0.3の117行目から134行目)。
#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__)
/* Try to find out if we're compiling for WinRT or non-WinRT */
/* If _USING_V110_SDK71_ is defined it means we are using the v110_xp or v120_xp toolset. */
#if defined(__MINGW32__) || (defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_) /* _MSC_VER==1700 for MSVC 2012 */
#include <winapifamily.h>
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#undef __WINDOWS__
#define __WINDOWS__ 1
/* See if we're compiling for WinRT: */
#Elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#undef __WINRT__
#define __WINRT__ 1
#endif
#else
#undef __WINDOWS__
#define __WINDOWS__ 1
#endif /* _MSC_VER < 1700 */
#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */