【发布时间】:2021-09-26 05:43:29
【问题描述】:
我最近遇到了这个奇怪的问题,在我的 Xcode 中的 Cocoa 应用程序项目中,当使用从 C++ 文件调用的“fopen”(errno 2)时,我收到了找不到文件的错误。我确保将这些文件复制到项目目录中,然后将它们从 Finder 目录拖到 Xcode 项目树中。最后,在方案的选项中,我检查了“使用自定义目录”并输入了我拥有项目和所有文件的目录。该程序构建良好,但在运行时出现 BAD ACCESS 错误,我可以看到我的 FILE* 变量仍然为 NULL。抛出异常的命令实际上是在两行之后“fread”,但这只是因为“fopen”没有完成它的工作。
整个设置之前在纯 C++ 项目中运行良好。但这是不同的,因为它是作为 Objective-C 中的 Cocoa 应用程序开始的(因为我打算使用 C++ 作为程序的主要逻辑)。在某些时候,我还必须将所有“.m”文件的扩展名更改为“.mm”,否则编译器甚至找不到 C++ 标准库! (但这可能是题外话)
所以问题是......我还需要检查什么才能让程序找到我要打开的文件?
注意:项目的主干是用 C++ 编写的,我使用 Cocoa 只是为了能够在屏幕上绘制图像,所以如果有人有更好的方法在 C++ 项目中包含图形我'我都在听。
感谢阅读
编辑:我正在使用 Xcode 12.4 和 Catalina 10.15.7
【问题讨论】:
-
您想了解当前工作目录是什么以及它与 exe 或源文件位置有何不同。你可以从这里开始How to get the current directory in a C program?
-
您是否在调试模式下从 Xcode 运行应用程序?应用程序是否被沙盒化?您的应用是否有权读取该文件?
-
@S.M.我会检查一下谢谢!
-
@Willeke 是的,我现在正在运行调试模式。是的,它有权读取文件。它是沙盒的吗?我会看看那个。谢谢