Details
-
Suggestion
-
Resolution: Won't Do
-
Not Evaluated
-
None
-
5.12.0
-
None
Description
Initialization of qmldir from moc in static build plugin can silently fail. The issue is in resource init function. This function name is based on project (.pro) name. When two projects have same name (very common) only one resource init function will be used for all mocced plugins.
Example of failed/incompatible plugins:
Q_IMPORT_PLUGIN(QtGraphicalEffectsPrivatePlugin) Q_IMPORT_PLUGIN(QtQuick2DialogsPrivatePlugin)
In static build FileDialog in qml cannot be used -> QtQuick2DialogsPrivatePlugin uses private_plugin_resource_init function from QtGraphicalEffectsPrivatePlugin.
Problematic files/functions:
\qtgraphicaleffects\src\effects\private\private_plugin_resources.cpp(6):void private_plugin_resource_init() \qtquickcontrols\src\dialogs\Private\private_plugin_resources.cpp(6):void private_plugin_resource_init()
fix
The issue is fixed by including unique string when generation resource files/functions:
\qtgraphicaleffects\src\effects\private\private_108_plugin_resources.cpp(6):void private_108_plugin_resource_init() \qtquickcontrols\src\dialogs\Private\private_105_plugin_resources.cpp(6):void private_105_plugin_resource_init()
caveat
Proposed patch is still not optimal. Function str_len should be replaced with hash of project file path.