我在 Mac 上通过 SDL2 访问文件时遇到了一个奇怪的问题。我在 OS X Mountain Lion 上使用 XCode 4,并且使用 SDL2 作为框架。我不是从源代码编译 SDL2。我已将框架添加到包中,以及我需要加载的文件。该程序从 XCode 构建并运行良好,但文件不会在编辑器之外加载(即,如果我双击独立的 .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 在初始化期间是否对活动目录做了一些奇怪的事情?
------------- 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()
失败了。有没有人知道可能发生的事情?