我有一个QT C ++应用程序,我使用xcode 4.2在MAC OS 10.6上编译。 应用程序尝试使用fopen()和stat()访问文件。 应用程序打包在一个捆绑包中,其中包含运行所需的所有qt库。
如果我通过双击捆绑包来运行应用程序,则无法访问带有希伯来语的文件 名。看着errno之后我看到它无法找到文件。
如果我通过单击“显示包内容”打开包并在里面运行可执行文件,一切正常。我设法用希伯来名字打开文件没有问题。
我确保通过运行“ps -ef”
在两种情况下运行相同的可执行文件我对mac开发很新,所以我可能会遗漏一些非常基本的东西。
任何想法可能是什么问题?为什么运行bundle和可执行文件之间有区别?
编辑: 这是失败代码的示例:
int osalGetFileSize(const char *rpFile, unsigned long long *rpFileSize){
struct stat objFileState;
if (0 == stat(rpFile, &objFileState) )
{
LOGG_INFO("osalGetFileSize(): managed to open file");
if (true == S_ISREG(objFileState.st_mode)) //is it a regular file?
{
LOGG_INFO("osalGetFileSize(): S_ISREG is true");
*rpFileSize = objFileState.st_size;
return OK;
}
}
LOGG_INFO("osalGetFileSize():last error: %s", strerror( errno));
return NOK;
}
运行应用程序时,stat返回-1并且errno = 2。 在运行可执行文件时,一切都很成功。
有一个类似的函数运行fopen,它也接受“const char * rpFile”。