我正在将一个c++ Qt应用程序从Windows移植到OSX,并且无法理解.app捆绑包的概念。我希望有人能帮我理解。
我的可执行文件位于以下位置: MyProgram.app/Content/MacOS/MyProgram.exe
我的资源文件夹在这里: MyProgram.app/Content/Resources/
在我的代码中,我使用相对路径来引用资源文件夹中的项:
“../Resources/omething.png”
如果我打开.app包并直接运行.exe,效果会很好。
但这不是.app捆绑包的工作方式。用户应该单击查找器中的.app包来运行程序。但在这种情况下,我的相对路径不再有效,这就是我不理解的地方。
有没有人理解我的问题以及我如何解决它?
发布于 2009-02-22 14:19:33
QApplication::applicationDirPath()http://doc.qt.io/qt-5/qcoreapplication.html#applicationDirPath
发布于 2009-02-23 10:23:57
我们使用:
QDir
CoreDir::bundle()
{
// Trolltech provided example
CFURLRef appUrlRef = CFBundleCopyBundleURL( CFBundleGetMainBundle() );
CFStringRef macPath = CFURLCopyFileSystemPath( appUrlRef, kCFURLPOSIXPathStyle );
QString path = CFStringToQString( macPath );
CFRelease(appUrlRef);
CFRelease(macPath);
return QDir( path );
}CoreDir::bundle().filePath( "../Resources“)也是如此;
发布于 2009-02-21 18:53:39
在编译产品时,是否尝试将Resources的路径设置为相对路径?否则,您可以检索主包及其应用程序的URL,并将其附加到资源URL。
https://stackoverflow.com/questions/573540
复制相似问题