[Development] 6 conflicting symbols between QtQuick 1 and 2

Harri Porten porten at froglogic.com
Tue Apr 23 13:04:22 CEST 2013


Hi!

Don't ask why but we ran into the known[1] segfault caused by symbol name 
conflicts between Qt5Qml and Qt5Declarative. Checking the symbol tables it 
appears to because by 6 symbols only:

   qmlContext(QObject const*)
   qmlExecuteDeferred(QObject*)
   qmlAttachedPropertiesObject(int*, QObject const*, QMetaObject const*, bool)
   qmlAttachedPropertiesObjectById(int, QObject const*, bool)
   qmlInfo(QObject const*)
   qmlEngine(QObject const*)

At least for non-VS compilers the partially different return types (QQml* 
vs. QDeclarative*) don't help with having a different symbol name 
mangling. At the same time the functions cannot be used interchangeably 
either. So I assume that this conflict was a simply copy&paste oversight 
during the porting.

I have not checked the respective use cases of the functions but I guess 
that they are internal to Qt despite being exported? Anyone sees a problem 
with renaming the functions of v1 or v2 to make their names unique? If 
not, we'll prepare a patch and present it.

To stress one point: we are not attempting to run both types of GUIs in a 
single application. We'd just like to have the possibility to have the two 
libraries co-exist and optionially be used.

Harri.

[1] https://bugreports.qt-project.org/browse/QTBUG-29584





More information about the Development mailing list