Reputation: 5459
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/styleSheet.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,
Upvotes: 11
Views: 8102
Reputation: 5459
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
Credit goes to Jaco N. on the Qt-Interest mailing list. Thank you Jaco!
Upvotes: 15