开发者

How to initialize Qt resources from a shared library?

I can not figure out how to initialize Qt resources declared in and used by a shared library under Red Hat Enterprise Linux 5.2.

I added a Qt resource file to my shared library, added a prefix named "resource", and added a file "files/styleSheet.xsl". The resource file is named "resources.qrc". QFile::exists returns 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/styleSh开发者_如何学编程eet.xsl";
      if( false == QFile::exists(resourcePath))
      {
         printf("*** Error - Resource path not found : \"%s\"\n",   resourcePath.toLatin1().data());
      }

}

Thanks in advance for any tips or suggestions,


The problem is that under Linux, you can not have identically named Qt resource files (*.qrc) in both your shared library and application. This is not a problem under Windows but under Linux it will only load one of the identically named resource files. I had named resource files in both my application and shared library files "resources.qrc". I renamed to "resourcesmylib.qrc" and "resourcesmyapp.qrc" and all was good. I did not need to add a call Q_INIT_RESOURCES to my library or call qInitResources_resources*.

Solution

  • Use unique Qt resource file names for your library and application under Linux.

Credit goes to Jaco N. on the Qt-Interest mailing list. Thank you Jaco!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜