2
我想使用QApplication
類創建一個獨立的靜態庫,其中包含Qt。如何使用QApplication創建獨立靜態庫?
所以這樣做,我使用PIMPL,因爲我不希望公開任何的Qt類。
我的私人實現看起來如此簡單:
class Implementation : public QApplication {
public:
Implementation(int argc, char *argv[]) :
QApplication(argc, argv)
{
}
};
但每當我試圖從我的測試應用程序啓動庫我得到的所有有錯誤:
undefined reference to `QApplication::metaObject() const'
是的!它確實有道理。我得到那些,因爲測試應用程序沒有任何參考Qt的QApplication
類。
所以我怎麼使用Qt的和特別是QApplication
類在我的圖書館,並仍然能夠在平原C++項目使用它?
我想用QWidgets和QPainter創建一個簡單的圖形庫。我不知道它是否與這個問題相關,但我仍然得到一個'未定義的對_imp ___ ZN12QApplicationC2ERiPPci1'的引用,還有另一個'對SimpleOpenDrawerImplementation的vtable的未定義引用。你能提供解決這個問題的建議嗎? – 2013-04-08 15:43:20
確保你[調用了''moc''](http://qt-project.org/doc/qt-4.8/moc.html#moc)並且鏈接到了生成的目標文件。這是鏈接器錯誤的原因。 從庫與QApplication一樣,一個典型的方法是委託實例化QApplication給庫用戶。每個進程只能有一個QApplication實例。 – 2013-04-08 15:52:28
我在文件末尾添加了#include「implementation.moc」。現在我得到了很多新的'未定義引用'錯誤,包括'未定義引用'非虛擬thunk到...' – 2013-04-08 18:23:06