2010-11-30 8 views
8

Red Hat Enterprise Linux 5.2에서 공유 라이브러리에 선언되어 사용 된 Qt 리소스를 초기화하는 방법을 알 수 없습니다.Qt 리소스를 공유 라이브러리에서 초기화하는 방법은 무엇입니까?

공유 라이브러리에 Qt 리소스 파일을 추가하고 "resource"라는 접두사를 추가하고 "files/styleSheet.xsl"파일을 추가했습니다. 리소스 파일의 이름은 "resources.qrc"입니다. QFile :: exists가 false를 반환합니까? 어떤 조언이나 제안에 미리

MySharedLib::MySharedLib() 
{ 

    // I think Q_INIT_RESOURCE basically expands to this: 
    // The resource file is named "resources.qrc" 
    extern int qInitResources_resources(); 
    qInitResources_resources(); 

     QString resourcePath = ":/resource/files/styleSheet.xsl"; 
     if(false == QFile::exists(resourcePath)) 
     { 
     printf("*** Error - Resource path not found : \"%s\"\n", resourcePath.toLatin1().data()); 
     } 

} 

감사합니다,

+0

관련 항목 : [Plugin (.so)의 Qt UI (이미지 포함)] (http://stackoverflow.com/questions/5097087/) –

+0

궁금한 점이 있으시면 문제를 해결할 수 있었습니까? 나는 매우 비슷한 문제를 가지고 있으며 해결책을 찾을 수 없다. – DRAX

답변

9

문제는 리눅스에서, 당신은 동일 Qt는 리소스 파일을 이름을 가질 수 있다는 것입니다 (* .qrc) 모두 공유 라이브러리와 응용 프로그램입니다. Windows에서는 문제가되지 않지만 Linux에서는 동일한 이름의 리소스 파일 중 하나만로드합니다. 내 응용 프로그램과 공유 라이브러리 파일 인 "resources.qrc"둘 다에 리소스 파일을 명명했습니다. 나는 "resourcesmylib.qrc"와 "resourcesmyapp.qrc"로 이름을 바꾸 었으며 모두 좋았습니다. 내 라이브러리에 Q_INIT_RESOURCES 호출을 추가하거나 qInitResources_resources *를 호출 할 필요가 없습니다.

솔루션 리눅스에서 라이브러리 및 응용 프로그램에 대한

  • 고유 한 사용 Qt는 리소스 파일 이름.

신용은 Qt-Interest 메일 링리스트의 Jaco N.에게 있습니다. 고맙습니다. 자코!

관련 문제