Windows デスクトップ用の Visual Studio Express 2012 に SDL_ttf をインストールしようとしていますが、問題なくコンパイルできる小さなサンプル プログラムがありますが、それを実行すると、「アプリケーションを正しく起動できませんでした (0xc000007b)」というエラー ポップアップが表示されます。 [OK] をクリックしてアプリケーションを閉じます。」
私はもともと基本的な SDL を動作させた後、SDL フォントを追加しようとしました。私は次のことを行いましたが、まだ問題が発生しています。誰かが私を助けてくれれば、それは大歓迎です...
1) すべての .lib フォルダーを Visual Studio lib フォルダー (C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib) (SDL.lib、SDLMain.lib、SDL_ttf.lib) にコピーしました。
2) SDL と SDL_ttf のインクルード ディレクトリをプロジェクト プロパティに追加しました (プロジェクト >> プロパティ >> 構成プロパティ >> VC++ ディレクトリ >> インクルード ディレクトリの下) ... これらは ("...\SDL Main Libraries\SDL -1.2.15\include") および ("...\SDL Font Libraries\SDL_ttf-2.0.11\include")
3) SDL と SDL_ttf の追加の依存関係を追加しました ([プロジェクト] >> [プロパティ] >> [構成プロパティ] >> [リンカー] >> [入力] >> [追加の依存関係] の下に、SDL.lib SDLMain.lib SDL_ttf.lib インライン - 次のように配置します)。これ: SDL.lib;SDLMain.lib;SDL_ttf.lib;%(AdditionalDependencies)
4) 次の dll ファイルを .exe ファイルと同じフォルダー (Visual Studio 2012\Projects\ConsoleApplication2\Debug) に配置しました。これらの dll ファイルは次のとおりです。 SDL_image.dll libfreetype-6.dll SDL_ttf.dll zlib1. dll SDL.dll
そして、これは私の小さなサンプル プログラムのソース コードです。
#include <iostream>
#include <SDL.h>
#include <SDL_ttf.h>
using namespace std;
int main(int argc, char** argv){
int retval = 0;
int sdlState = -1;
if((sdlState = SDL_Init(SDL_INIT_EVERYTHING)) == -1){
cerr << "SDL failed to initialize";
retval = 1;
}
SDL_Surface* screen = nullptr;
if(retval == 0){
if(nullptr == (screen =
SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_ASYNCBLIT)))
{
cerr << "Screen failed to be created";
retval = 1;
}
}
int ttfState = -1;
if(retval == 0){
if((ttfState = TTF_Init()) == -1){
cerr << "True Type Font failed to initialize";
retval = 1;
}
}
if(retval == 0){
//TTF_Font* font = TTF_OpenFont("air.ttf", 32);
SDL_Color txtColor = {0, 0, 0};
//SDL_Surface* text = TTF_RenderText_Solid(font, "Hello World",
//txtColor);
while(1){
SDL_FillRect(screen, NULL,
SDL_MapRGB(screen->format, 255, 255, 150));
//SDL_BlitSurface(text, NULL, screen, NULL);
SDL_Flip(screen);
}
}
if(ttfState != -1) TTF_Quit();
if(sdlState != -1) SDL_Quit();
return retval;
}