2009-05-26 35 views
3

也許這是一個非常愚蠢的問題,但我希望你能給我一些答案。可能:執行Qt3和Qt4代碼的程序?

我有一個商業應用程序,它的GUI和一個嵌入式Python解釋器(命令行)使用Qt3編寫腳本。我想爲使用Qt4的這個應用程序編寫一個自定義插件。該插件主要是一個子類QMainWindow類,它連同一個dll(所以我在Windows上)以及一個boost python包裝器。 python包裝應該是我的插件和我的商業應用程序之間的接口。

所以我的問題:這可能嗎?因此,在同一應用程序中運行獨立於運行Qt4代碼的Qt3代碼。

第一實驗導致應用程序關閉,我會嘗試這進一步調查...

謝謝!

編輯: 我的應用程序崩潰了,因爲我沒有創建QT4 qapplication實例。所以當我創建實例時,沒有額外的Qt命名空間(這是在答案中建議的,所以不需要重新編譯),一切正常。 ;)

回答

3

在Trolltech論壇上查看this thread。 (實際上這是關於Qt4應用程序中的Qt3插件,但我懷疑答案非常相似)。

更新:現在連接一個啞彈,但wayback machine有它。

+0

好酷,我重新編譯Qt的命名空間「QT4」,我證明這個命名空間通過依賴walker工具鏈接到qt dll中。但是像「#define QT_NAMESPACE QT4」之類的名稱空間定義從未出現在qt頭文件之一中,因此QT_NAMESPACE未定義。你有這個行爲的答案嗎? 我在「qglobal.h」的開頭手動定義了命名空間,它似乎到目前爲止工作... – 2009-05-27 13:21:08

3

這可能是通過命名空間Qt。從configure --help;

-qtnamespace <name> Wraps all Qt library code in 'namespace <name> {...}'. 

從理論上講,這應該可以防止可能導致您當前的方法失敗的符號衝突。