QMetaType::registerType: Binary compatibility break — Size mismatch for type ‘QPaintBufferCacheEntry’ [1024]. Previously registered size 0, now regist
-
I have the same problem, and trying with -rpath and rpath-link, but that doesnt help.
In fact, Qt is using g++, and not ld.
Please help how to come further with this. -
Hi,
g++ is the compiler, ld is the library loader, they don't act at the same moment.
Does you application use an external library that is linked against Qt 4 ?
-
Thank you for your reply.
I checked that before but can't find any link to Qt4.
I have installed Qt5.1.1, but as I have seen in this post before, also my Linux is having Qy4 libraries in the /usr/lib.The last action from Qt while building the app is:
g++ -Wl,-rpath,/home/infologic/Qt5.1.1/5.1.1/gcc -Wl,-rpath,/home/infologic/Qt5.1.1/5.1.1/gcc/lib -o demo-player DemoPlayer.o main.o Enums.o Common.o Instance.o Error.o moc_DemoPlayer.o moc_Instance.o -lvlc -Wl,-rpath-link,/home/infologic/Qt5.1.1/5.1.1/gcc/lib -L/home/infologic/Qt5.1.1/5.1.1/gcc/lib -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread
{ test -n "" && DESTDIR="" || DESTDIR=.; } && test $(gdb --version | sed -e 's,[^0-9]+([0-9]).([0-9]).*,\1\2,;q') -gt 72 && gdb --nx --batch --quiet -ex 'set confirm off' -ex "save gdb-index $DESTDIR" -ex quit 'demo-player' && test -f demo-player.gdb-index && objcopy --add-section '.gdb_index=demo-player.gdb-index' --set-section-flags '.gdb_index=readonly' 'demo-player' 'demo-player' && rm -f demo-player.gdb-index || trueMaybe you can find something out of this?
Thanks in advance.
-
The ldd of the release returns:
ldd demo-player
linux-gate.so.1 (0xb77c2000)
libvlc.so.5 => /usr/lib/libvlc.so.5 (0xb7785000)
libQt5Widgets.so.5 => /home/infologic/Qt5.1.1/5.1.1/gcc/lib/libQt5Widgets.so.5 (0xb7159000)
libQt5Gui.so.5 => /home/infologic/Qt5.1.1/5.1.1/gcc/lib/libQt5Gui.so.5 (0xb6cee000)
libQt5Core.so.5 => /home/infologic/Qt5.1.1/5.1.1/gcc/lib/libQt5Core.so.5 (0xb686a000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb680b000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb67f0000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6704000)
libm.so.6 => /lib/libm.so.6 (0xb66c2000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb66a4000)
libc.so.6 => /lib/libc.so.6 (0xb6529000)
libvlccore.so.5 => /usr/lib/libvlccore.so.5 (0xb6429000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb63da000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb62dc000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb61a2000)
libicui18n.so.51 => /home/infologic/Qt5.1.1/5.1.1/gcc/lib/libicui18n.so.51 (0xb5f7f000)
libicuuc.so.51 => /home/infologic/Qt5.1.1/5.1.1/gcc/lib/libicuuc.so.51 (0xb5e06000)
libdl.so.2 => /lib/libdl.so.2 (0xb5e01000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb5dfe000)
librt.so.1 => /lib/librt.so.1 (0xb5df5000)
/lib/ld-linux.so.2 (0xb77c3000)
libglapi.so.0 => /usr/lib/libglapi.so.0 (0xb5dde000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb5dcb000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xb5dc7000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb5dc1000)
libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0xb5dbe000)
libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0xb5da4000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb5d81000)
libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0xb5d7b000)
libdrm.so.2 => /usr/lib/libdrm.so.2 (0xb5d6d000)
libdbus-1.so.3 => /lib/libdbus-1.so.3 (0xb5d21000)
libffi.so.4 => /usr/lib/libffi.so.4 (0xb5d1a000)
libpcre.so.1 => /usr/lib/libpcre.so.1 (0xb5cb6000)
libicudata.so.51 => /home/infologic/Qt5.1.1/5.1.1/gcc/lib/libicudata.so.51 (0xb476d000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb4769000) -
While testing around I found out that the Qt4 is installed in /usr/include, /usr/lib and Qt5 not.
However, I do not see a possibility to install Qt5 in these directories. My KDE is using Qt4.As above, how can I force to only use Qt5 in my demo program?
I also included the -I flag, but when checking the folders it still uses the /usr/include having the Qt4 files. -
Please use codings tags when posting code/ldd output etc... It will make them readable.
Don't try to put the two sets of include/libraries in the same folders.
Qt 5 is good where it is. Try to run your program with QT_DEBUG_PLUGINS=1 to see what plugins are loaded (i.e. the theme plugin) and check them to see whether one of them pulls Qt4 in
-
I have added the arguments, and the compile output gives:
g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIE -DQT_DEBUG_PLUGINS=1Running the application gives:
Starting /home/infologic/workspace/cpp/infologic/demo-player/demo-player...
Started
QMetaType::registerType: Binary compatibility break -- Size mismatch for type 'QPaintBufferCacheEntry' [1024]. Previously registered size 12, now registering size 0.
The program has unexpectedly finished.
/home/infologic/workspace/cpp/infologic/demo-player/demo-player exited with code 0It seems it crashes before loading the plugins.
I managed to force Qt to only use include files from Qt5.
-
Not build, run your program with QT_DEBUG_PLUGINS=1
-
I have found the reason. I created a new project, and that one gave me a backtrack.
It's loading the libqt4_plugin.so, which is causing the troubles.
Removing this file from the plugins dir solves the crash!I copied the plugins dir, removed the gui subdir and set the environment var VLC_PLUGIN_PATH=<new dir>
-
That might indeed happen with all libraries that uses Qt (qca comes into mind)
Glad you found out.
Happy coding :)