2009-07-18 89 views
1

我有一個工作正常的動態庫,並且我想在其中使用QObject。在包含「qobject.h」頭文件後,我編譯並添加了evrything。但是當我嘗試聲明一個QObject時,編譯器總是給我一個「找不到標識符」的錯誤。我嘗試過QObject類的炫耀,它沒有幫助。這很奇怪,因爲當我在我的dll中使用Qt時,visual studio的intellisense正在工作(例如:當我聲明一個QObject時,visual sdio顯示我可用於QObject的函數)。在動態庫中使用Qt有什麼特別之處嗎?我現在需要使用QObject來編譯它嗎?在動態庫中鏈接Qt

感謝您的幫助

戴夫

編輯:問題似乎只出現後我包括stdafx.h中。如果我試圖在Stdafx.h後包含Qt頭文件,我的庫無法編譯,給我語法錯誤。如果在包含Stdafx.h之前使用Qt引用,它會編譯並運行良好,但是這種方法沒用,因爲我無法在現有代碼中使用Qt引用。

1>c:\users\dave\documents\visual studio 2008\projects\frogger\froggerdll\ftclient.cpp(47) : error C2653: 'QWidget' : is not a class or namespace name 
1>c:\users\dave\documents\visual studio 2008\projects\frogger\froggerdll\ftclient.cpp(47) : error C3861: 'find': identifier not found 

所討論的行是QWidget的::找到(HWND); 和我包括QWidget

回答

0

你在VS和Qt之間安裝了integration嗎?我確實相信你需要(代替使用qmake)來應用程序和庫。至於stdafx問題,我想你必須碰到該頭文件和qobject文件之間的相互衝突的宏(但是如果我讀了你的話,你可以通過按順序包含它們來繞過問題,首先是qobject,然後是stdafx--是那是正確的?)。 [[顯然不是,根據OP的最新評論]]。

編輯:上讓VS/Qt的整合工作的一些指令是here,如果你使用Qt 4.5的版本LGPL - 否則我認爲集成產品是一個商業產品。 (如果您不需要Visual Studio的某些特定方面,您可以使用Qt Creator來代替,但是我確實意識到VS及其底層C++編譯器在其他方面可能更可取)。

+0

好吧,我可以繞過它,通過包括他們在正確的順序,但然後我不能使用QObject,所以它不能真正解決我的問題。我會嘗試安裝整合。有什麼特別的步驟需要採取,還是應該在那之後編譯好? – 2009-07-18 17:46:14