2010-11-30 17 views
8

No puedo averiguar cómo inicializar los recursos de Qt declarados y utilizados por una biblioteca compartida en Red Hat Enterprise Linux 5.2.¿Cómo inicializar los recursos de Qt de una biblioteca compartida?

Agregué un archivo de recursos Qt a mi biblioteca compartida, agregué un prefijo llamado "recurso" y agregué un archivo "files/styleSheet.xsl". El archivo de recursos se llama "resources.qrc". QFile :: exists devuelve falso?

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()); 
     } 

} 

Gracias de antemano por cualquier consejo o sugerencia,

+0

relacionados: [Problemas para cargar Qt UI (con imágenes) desde el complemento (.so)] (http://stackoverflow.com/questions/5097087/) –

+0

Tengo curiosidad, ¿ha logrado resolver este problema? Tengo un problema muy similar y no puedo encontrar una solución. – DRAX

Respuesta

9

El problema es que en Linux, puede no ha nombrado idénticamente archivos de recursos de Qt (* .qrc), tanto en su biblioteca y aplicación compartida. Esto no es un problema en Windows pero bajo Linux solo cargará uno de los archivos de recursos con nombres idénticos. Hice nombrar los archivos de recursos en mi aplicación y en los archivos de la biblioteca compartida "resources.qrc". Cambié el nombre a "resourcesmylib.qrc" y "resourcesmyapp.qrc" y todo fue bueno. No necesité agregar una llamada Q_INIT_RESOURCES a mi biblioteca o llamar a qInitResources_resources *.

Solución

  • Use nombres de los archivos de recursos de Qt únicas para su biblioteca y aplicación en Linux.

El crédito va a Jaco N. en la lista de correo de Qt-Interest. ¡Gracias Jaco!

Cuestiones relacionadas