2012-03-08 5 views
1

私はSDLのlazyfooチュートリアルに従っています。私はレッスン01で画面に画像を表示していますが、SDLは「hello.bmpを読み込めませんでした」と私に説明しています。私の.app内でhello.bmpを参照するには?

私はOS X、Xcode 3.2、および最新バージョンのSDLをウェブサイトから使用しています。

hello.bmpイメージをXcodeに正しく読み込まないことが関係していると思われますが、私はチュートリアルに続き、さらにグーグルが役立つ結果をもたらしていません。誰もこれをさらにトラブルシューティングする方法を知っていますか?

編集:これは相対パスと関係しているようです。 - >編集アクティブな実行可能ファイルと、今は 'プロジェクトディレクトリの作品に設定ワーキングディレクトリを変更することが、私はドン、私はプロジェクトに行くことによってすることを考え出した:

編集...しかし何が間違っている部分はまだわかりません.app自体にhello.bmpがロードされない理由を理解できません。私は何が欠けていますか?

編集:以下はリクエストごとに含まれるlazyfooレッスン01のソースコードです。これは、私のキャラクターを使用しているコードです。私のXCode(バージョン3.2)に関する情報が必要な場合は、教えてください。私はこれを正しく、Xは、Xcodeプロジェクトの名称である「X.app/Contents/Resources/hello.bmp」とlesson01のソースコード内で「hello.bmp」を置き換えることであることを発見しました

/*This source code copyrighted by Lazy Foo' Productions (2004-2012) 
and may not be redestributed without written permission.*/ 

//Include SDL functions and datatypes 
#include "SDL/SDL.h" 

int main(int argc, char* args[]) 
{ 
    //The images 
    SDL_Surface* hello = NULL; 
    SDL_Surface* screen = NULL; 

    //Start SDL 
    SDL_Init(SDL_INIT_EVERYTHING); 

    //Set up screen 
    screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE); 

    //Load image 
    hello = SDL_LoadBMP("3.app/Contents/Resources/hello.bmp"); 

    //Apply image to screen 
    SDL_BlitSurface(hello, NULL, screen, NULL); 

    //Update Screen 
    SDL_Flip(screen); 

    //Pause 
    SDL_Delay(2000); 

    //Free the loaded image 
    SDL_FreeSurface(hello); 

    //Quit SDL 
    SDL_Quit(); 

    return 0; 
} 
+0

私はこれがSOに属すると思います。 –

+4

これはStack Overflowで尋ねられるべきですが、あなたのコードがなければ、かなり早くそこで閉じられます。編集してコードを追加すると、移行されます。 – ChrisF

+0

ソースコードが追加されました。申し訳ありませんが、手動で各行の先頭に4つのスペースを追加することなく正しくフォーマットする方法を理解できませんでした。私は1〜2行でそれをやり遂げる方法を思い出したと確信していましたが、もしあれば、今は消えてしまいました。 –

答えて

0

これは正しくありません。

SDL_LoadBMP("3.app/Contents/Resources/hello.bmp"); 

あなたは、そのリソースに対応するファイルの絶対パスでNSStringオブジェクトを返します[[NSBundle mainBundle] pathForResource:@"hello" ofType:@"bmp"]を呼び出すことにより、アプリケーションのバンドル内のリソースのパスを取得する必要があります。

+0

これはLinux上で動作しますか? –

+0

あなたの質問は 'osx'とタグ付けされており、Macアプリのバンドル内のファイルにアクセスする方法を尋ねています。 Linux用にも開発しているのであれば、通常のLinuxアプリケーションにはまったく当てはまらないので、何をしているのか、どのフレームワークを使用しているのかについてさらに多くの情報を含める必要があります。 – Jim

0

.appがデスクトップにコピーされてそこに走ったとしても構築されたアプリケーションを参照します。

また、hello.bmpをXCodeプロジェクトに追加することを忘れないでください。

+0

このソリューションはクロスプラットフォームではないため、理想的ではありません。 –

関連する問題