открыть с помощью .app файла [дубликата]

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");

но это не сработает. Может кто-нибудь мне помочь?

  • 3
    Ваш путь - это относительный путь, и поэтому он относительно рабочего каталога. Возможно, рабочий каталог - это не то, что вы думаете. Вы проверили, что это?
  • 1
    попробуйте распечатать текущий каталог при запуске exe: stackoverflow.com/questions/4807629/…
Теги:
qt
fopen

1 ответ

0
Лучший ответ

Вы захотите убедиться, что.sym файл попадет в комплект приложения (каталог.app), в частности в разделе Содержание/Ресурсы.

Затем вы можете использовать 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 вместо C.

  • 0
    Это сработало для меня в принципе. Я не проверял это на других платформах, все же. Я прокомментирую позже после того, как тест Linux был проведен. Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню