4

Mac で SDL2 を介してファイルにアクセスすると、奇妙な問題が発生します。OS X Mountain Lion で XCode 4 を使用しており、フレームワークとして SDL2 を使用しています。ソースから SDL2 をコンパイルしていません。フレームワークをバンドルに追加し、ロードする必要のあるファイルも追加しました。プログラムは XCode から正常にビルドおよび実行されますが、ファイルはエディターの外部ではロードされません (IE でスタンドアロンの .app をダブルクリックしても、ファイルはロードされません)。私の .app パッケージは次のようになります。

MyApp.app/
    Contents/
        Frameworks/
            SDL2.framework/
        MacOS/
            MyApp
        Resources/
            Configure.txt
            MyBMP.bmp
        Info.plist
        PkgInfo

私のCコードでは、これを試みました:

SDL_LoadBMP("MyApp.app/Contents/Resources/MyBMP.bmp");

これだけでなく:

SDL_LoadBMP("MyBMP.bmp");

そして、その間の事実上すべて。また、次の方法でテキストファイルにアクセスしようとしました:

FILE* data = fopen("MyApp.app/Contents/Resources/Configure.txt", "r");

FILE* data = fopen("Configure.txt", "r");

成功しませんでした。XCode エディター内では、長い絶対パスのみが機能しますが、私が試したものはスタンドアロンの .app では機能しませんでした。

他のユーザーはこの問題に遭遇していますか? SDL 1.2 を使用していたときにファイルをロードしていましたが、何らかの理由で SDL2 では何もロードされないようです。SDL2 は、初期化中に Active Directory で奇妙なことをしますか?

-------------EDIT 1-------------- 何が起こっているのかを把握するための私の最近の試みは、このコードを使用しました:

#include "SDL2/SDL.h"
#include "stdio.h"
#include "stdlib.h"

int main (int argc, char** argv){
    if(SDL_Init(SDL_INIT_EVERYTHING) < 0)
         return EXIT_FAILURE;

    FILE* test = fopen("Test.txt", "w");

    if (!test) 
        return EXIT_FAILURE;

    fprintf(test, "Let's see where this ends up...");
    fclose(test);
    return EXIT_SUCCESS;

    //The rest of my code, which shouldn't ever come into play...
}

XCode 4 エディターから実行すると、これは期待どおりに機能します。Debug フォルダの .app ファイルのすぐ隣に、「これがどこで終わるか見てみましょう...」というフレーズを含む Test.txt ファイルがあります。ただし、スタンドアロン アプリをクリックして実行すると、プログラムはすぐに終了し、テキスト ファイルは見つかりません。ログを確認したところ、プログラムがコード 1 で終了したとだけ書かれています。より詳細な分析により、fopen()失敗しているようです。誰が何が起こっているのかについて考えを持っていますか?

4

2 に答える 2