2010-11-30 49 views
8

我無法弄清楚如何在紅帽企業版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

相關:[從插件(.so)]加載Qt UI(帶圖像)問題(http://stackoverflow.com/questions/5097087/) – 2011-02-25 22:07:24

回答

9

的問題是,在Linux下,你不能有同名的Qt的資源文件(* .qrc)在這兩個共享庫和應用程序。這在Windows下不是問題,但在Linux下它只會加載其中一個相同名稱的資源文件。我在我的應用程序和共享庫文件「resources.qrc」中命名了資源文件。我改名爲「resourcesmylib.qrc」和「resourcesmyapp.qrc」,一切都很好。我不需要向庫中添加一個調用Q_INIT_RESOURCES,或者調用qInitResources_resources *。

解決方案

  • 使用獨特的Qt資源文件 您的Linux下的庫和應用程序名稱。

功勞歸Jaco N.在Qt-Interest郵件列表上。謝謝哈科!