0

我正在开发一个 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");

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

4

1 回答 1

0

您需要确保 .sym 文件最终位于应用程序包(.app 目录)中,特别是在 Contents/Resources 下。

然后您可以使用QCoreApplication::applicationDirPath来获取您的应用程序的目录(例如“/Applications/Project.app/Contents/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 的。

于 2014-11-14T10:50:21.827 回答