Я использую Qt 5.0.1 под Ubuntu 10.04, и в моем приложении мне нужно использовать QSharedPointer вместе с соответствующими преобразованиями dynamic_cast (object_cast) во время выполнения. Эти преобразования вызывается в общем объекте, который правильно загружается во время выполнения. Мне нужно развернуть мое приложение, чтобы запустить его на встроенном компьютере с операционной системой Ubuntu 10.04; поэтому я использую Qt под Ubuntu 10.04.QSharedPointer dynamicCast и objectCast fail на ubuntu
Если я создаю мое приложение, и я запустил его на том же компьютере, где установлены библиотеки Qt, все работает так, как ожидалось.
Однако, если я запустил приложение на встроенном компьютере, qSharedPointerDynamicCast (и аналогичный QSharedPointer :: dynamicCast, qSharedPointerObjectCast и QSharedPointer :: objectCast) сбой и возвращает нулевой указатель. Я проверил, что обе машины имеют одинаковую конфигурацию, и, за исключением проблем dynamic_cast/object_cast, все работает нормально.
Я думаю, что это может быть проблема RTTI, однако, после обширного поиска в Google, я не нашел решения своей проблемы.
qSharedPointerObjectCast use qobject_cast, функция qobject_cast() ведет себя аналогично стандартной версии C++ dynamic_cast(), с тем преимуществом, что она не требует поддержки RTTI и работает через границы динамической библиотеки. Поэтому RTTI не должен влиять на поведение. – AnatolyS
ли бинарный пакет содержит все необходимые qt-библиотеки, включая qt-плагины? – AnatolyS
Благодарим вас за ответ. Я попытался использовать как objectCast, так и dynamicCast. Однако я понял, что objectCast отлично работает для класса (скажем, класс A), но он не работает для другого класса (скажем, класса B) моего приложения; dynamicCast, вместо этого, отлично работает с классом B и терпит неудачу с классом A. – arms