我在Ubuntu 10.04下使用Qt 5.0.1,在我的應用程序中,我需要在運行時使用QSharedPointer和相應的dynamic_cast(object_cast)轉換。這些轉換在運行時正確加載的共享對象中調用。我必須將我的應用程序部署到使用Ubuntu 10.04操作系統的嵌入式計算機上運行;這就是爲什麼我在Ubuntu 10.04下使用Qt的原因。QSharedPointer dynamicCast和objectCast在Ubuntu上失敗
如果我構建我的應用程序,並在安裝了Qt庫的同一臺計算機上運行它,那麼一切都按預期工作。
但是,如果我在嵌入式計算機上運行應用程序,qSharedPointerDynamicCast(和類似的QSharedPointer :: dynamicCast,qSharedPointerObjectCast和QSharedPointer :: objectCast)失敗並返回一個空指針。我檢查了兩臺機器都具有相同的配置,除dynamic_cast/object_cast問題外,一切似乎都正常。
我認爲這可能是一個RTTI問題,但是,廣泛的谷歌搜索後,我沒有找到我的問題的解決方案。
qSharedPointerObjectCast使用qobject_cast,qobject_cast()函數的行爲與標準C++ dynamic_cast()類似,其優點是不需要RTTI支持,它可以跨動態庫邊界使用。所以RTTI不必影響行爲。 – AnatolyS 2013-03-19 13:57:31
二進制包是否包含所有必需的qt庫,包括qt插件? – AnatolyS 2013-03-19 14:00:12
謝謝你的回覆。我試圖使用objectCast和dynamicCast。然而我認識到objectCast對一個類(比如A類)工作正常,但對於我的應用程序的另一個類(比如說B類)不起作用。 dynamicCast反而對B類正常工作,但A類失敗。 – arms 2013-03-19 14:04:34