使用.app文件打开

fopen with a .app file

本文关键字:文件 app 使用      更新时间:2023-10-16

我正在做一个Qt项目,该项目将元音映射到具有*.sym格式的图表上。

我的目标是像这样加载初始 IPA 图表。

我有*.sym文件,我可以在应用程序启动后加载它们,但我不确定我的可执行文件正在执行的位置。

我有一个这样的目录格式(构建后)

Project
|_ Source
|_ Build
  |_ Source
    |_ Charts
      |_ load_at_start.sym
    |_ Project.app
      |_ Contents
        |_ MacOS
          |_ Project (executable)

这使得使用 fopen 调用变得非常困难。我假设 fopen 会将当前工作目录视为可执行文件所在的位置,所以我尝试了这样的事情......

    FILE *stream = fopen("./../../../charts/load_at_start.sym", "r");

但它不起作用。谁能帮我?

您需要

确保 .sym 文件最终位于应用程序捆绑包(.app目录)中,特别是在"内容/资源"下。

然后你可以使用QCoreApplication::applicationDirPath来获取你的应用程序的目录(例如"/Applications/Project.app/Content/MacOS/"),并将相对路径附加到你的文件中(例如"../Resources/charts/load_at_start.sym")。

像这样:

QDir dir(QCoreApplication::applicationDirPath());
dir.cd("../Resources/charts");
FILE* stream = fopen(dir.filePath("load_at_start.sym").toUtf8().constData());

尽管您可能需要考虑使用Qt的I/O工具而不是C。