2016-07-06 25 views
0

SDL2でSDL2_ttfを使用しています(Visual Studio 2015で)。SDLとSDL2でSDL_ttfを使用するとC++のアクセス違反が発生する

#include "SDL.h" 
#include "SDL_ttf.h" 

int main(int argc, char* args[]) { 
    SDL_Init(SDL_INIT_EVERYTHING); 
    TTF_Init(); 

    SDL_Window* window; 
    SDL_Renderer* renderer; 
    SDL_CreateWindowAndRenderer(1600, 900, SDL_WINDOW_OPENGL, &window, &renderer); 

    TTF_Font* font = TTF_OpenFont("comic.ttf", 12); 
    SDL_Color color = { 0, 0, 0, 255 }; 
    SDL_Surface* textSurface = TTF_RenderText_Solid(font, "asdf", color); 
    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, textSurface); 

    TTF_Quit(); 
    SDL_Quit(); 
    return 0; 
} 

「SDL.dllが見つかりません」ランタイムエラーが発生しました。 SDL.dll、SDL2.dll、libfreetype-6.dll、SDL_ttf.dll、zlib1.dll、その他のライブラリをsystem32フォルダに入れてランタイムエラーを解決しましたが、瞬時に別のエラーが発生しました。 MCP2016.exeの0x000000006C812E39(SDL2.dll):0xC0000005:アクセス違反が0x000000010000006Aの場所を読み取っています。

私は私にこのことを伝えるVisual Studioのダイアログで「ブレイク」に決めたとき、それはラインに

SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, textSurface);

を指摘し、私はSDL_ttfとSDL2のようなアクセス違反を引き起こす可能性があることを示唆しold forum postに出くわしましたこれは完全に互換性がないためです。私は、これが最初にSDL.dllについて不平を言ったので、これが私が持っている問題で何かをしなければならないと思います。 DLLをSDL2ヘッダーファイルで再コンパイルすることが推奨されていましたが、WindowsやC++がうまく機能しないため、私の能力を超えてしまうのではないかと恐れています。

私はこれを約8時間作業していますが、私はこれを解決しようとするアイディアが不足しています。誰にもこれについてのアイデアはありますか?

+3

SDL_ttf 2.0を使ってみましたか? https://www.libsdl.org/projects/SDL_ttf/ – user3684240

+0

SDL_ttf 1.0のバージョンを誤って使用したようです。私はそれがSDF_ttf 2.0だと思った:$ ありがとう! –

答えて

3

SDLとSDL2は互換性がありません。 あなたはどちらか一方を持っています。

コメントに記載されているとおり、代わりにSDL2_ttfを使用します。

+0

ありがとう、それはspendidly働いた! –

関連する問題