문제

C ++ QT 응용 프로그램을 Windows에서 OSX로 포팅하고 있으며 .App 번들 개념을 둘러싼 머리를 감을 수 없습니다. 누군가가 나를 이해하도록 도와 줄 수 있기를 바랍니다.

내 실행 파일은 여기에 있습니다 : myprogram.app/content/macos/myprogram.exe

내 리소스 폴더는 여기에 있습니다 : myprogram.app/content/resources/

내 코드에서는 리소스 폴더에서 상대적 경로를 참조하는 항목을 사용합니다.

"../resources/something.png"

.app 번들을 열고 .exe를 직접 실행하면 이것은 훌륭합니다.

그러나 이것이 .app 번들이 작동하는 방식이 아닙니다. 사용자는 파인더의 .app 번들을 클릭하여 프로그램을 실행해야합니다. 그러나이 경우 내 상대 경로는 더 이상 작동하지 않으며 이것이 내가 이해하지 못하는 것입니다.

누구든지 내 문제를 이해하고 어떻게 고칠 수 있습니까?

도움이 되었습니까?

해결책

다른 팁

우리는 사용:

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

제품을 컴파일 할 때 경로를 설정하려고 시도하십시오. Resources 상대적으로? 그렇지 않으면, 메인 번들, 그 앱의 URL을 검색하여 리소스 URL에 추가 할 수 있습니다.

번들 프로그래밍 안내서

모든 것을위한 매뉴얼이 있습니다. :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top