一個關於Qwt在VS2010環境的link error

之前透過MinGW32與Qwt來開發程式一直都相安無事。最近嘗試使用Visual Studio 2010,Qt及Qwt來開發另外一個程式,卻遇上了下面這樣的錯誤:

moc_xxx.obj👎 error: LNK2001: unresolved external symbol "public: static struct QMetaObject const QwtPlot::staticMetaObject" (?staticMetaObject@QwtPlot@@2UQMetaObject@@B)

[][1]後來終於在stackoverflow上面找到答案。其實解決方法極為簡單,只需要把QWT_DLL設成empty就可以了。看起來是因為Qwt對於import/export library的地方沒有自動偵測,所以導致這個問題。因此,強制設定QWT_DLL為empty就可以讓Qwt內由 moc 與 Q_DECL_EXPORT 所引起的問題得到解決。

可以在你的pro檔案內,加上下面的敘述: DEFINES += QWT_DLL

這樣就可以把QWT_DLL變成empty了。

[1]:

comments powered by Disqus