获取Mac .app包中的相对路径

时间:2011-09-18 11:59:25

标签: c++ xcode macos

我开发了一个用C ++,OpenGL和OpenAL开发的游戏,我正在尝试将其构建为应用程序包而不是命令行可执行文件。我复制并粘贴了来自main.cpp文件顶部的Relative Paths Not Working in Xcode C++的代码(也在App_Prefix.pch中尝试过),我得到了许多语法错误。我用错误注释了代码:

#ifdef __APPLE__
#include "CoreFoundation/CoreFoundation.h"
#endif

// ----------------------------------------------------------------------------
// This makes relative paths work in C++ in Xcode by changing directory to the Resources folder inside the .app bundle
#ifdef __APPLE__    
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle);
    char path[PATH_MAX];
    if (!CFURLGetFileSystemRepresentation(resourcesURL, TRUE, (UInt8 *)path, PATH_MAX)) // Error: expected unqualified-id before 'if'
    {
        // error!
    }
    CFRelease(resourcesURL); // error: expected constructor, destructor or type conversion before '(' token

    chdir(path); // error: expected constructor, destructor or type conversion before '(' token
    std::cout << "Current Path: " << path << std::endl; // error: expected constructor, destructor or type conversion before '<<' token
#endif

他的代码看起来很好,很多人都在他的帖子中感谢他。有什么我做错了吗?我应该专门为此代码创建一个文件并在其他任何内容之前导入它吗?

1 个答案:

答案 0 :(得分:3)

您的代码应位于函数内,例如main()。目前,您的代码将粘贴到文件级别。你不能在那里进行if语句或函数调用。