On Wed March 7 2012 09:41:23 Timothy Pearson wrote:
Let's take a simple example, qWarning. This
becomes _Z8qWarningPKcz in
libqt-mt.so.3.3.8 (nm -D /usr/lib/libqt-mt.so | grep qWarning), and
_Z8qWarningPKcz in /usr/lib/libQtCore.so (nm -D /usr/lib/libQtCore.so |
grep qWarning). If my program references Z8qWarningPKcz, which library
will the symbol resolver choose at runtime? They are not binary
compatible with each other, and when the symbol resolver chooses the
wrong
one at runtime (which it will do quite often) the entire program will
crash.
Could the problem you describe be addressed more easily with C++
namespaces?
--Mike Bird
No, unfortunately. The methods and variables that are in conflict are
either static global or due to identical class and method naming. Also,
using namespaces that heavily will introduce other problems.
Tim