2013-03-19 2 views
2

Я использую 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, я не нашел решения своей проблемы.

+0

qSharedPointerObjectCast use qobject_cast, функция qobject_cast() ведет себя аналогично стандартной версии C++ dynamic_cast(), с тем преимуществом, что она не требует поддержки RTTI и работает через границы динамической библиотеки. Поэтому RTTI не должен влиять на поведение. – AnatolyS

+0

ли бинарный пакет содержит все необходимые qt-библиотеки, включая qt-плагины? – AnatolyS

+0

Благодарим вас за ответ. Я попытался использовать как objectCast, так и dynamicCast. Однако я понял, что objectCast отлично работает для класса (скажем, класс A), но он не работает для другого класса (скажем, класса B) моего приложения; dynamicCast, вместо этого, отлично работает с классом B и терпит неудачу с классом A. – arms

ответ

0

Я думаю, что единственное объяснение ваших проблем состоит в том, что у вас есть ошибки памяти в вашем приложении, и вы либо развращаете свои объекты, либо используете освобожденные объекты. Используйте Valgrind и посмотрите, что вы получаете.

Смежные вопросы