使用.app文件打开
fopen with a .app file
我正在做一个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。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 文件模式标志"ios::app"是否用于删除文件(如果文件已存在)?
- ios::app 和 ios::noreplace 模式在文件处理中有什么区别?
- 如何在没有.app的情况下,在 macOS 上使用 qmake 获取二进制文件
- 如何在c++中使用seekg和seekp附加到文件,而不使用ios:app标志
- .app文件的行为与MAC上Qtreeview中的文件夹类似
- 使用.app文件打开
- 将打开的文件的ios_base从'out'更改为'app'而不关闭文件
- 文件处理C++,在ios::app模式下打开,文件被擦除
- 如何在从C++调用 C# dll 时使用 app.config 文件