2010年8月27日 星期五

總算解決了Q_OBJECT的micro,產生的link error...


平台: Qt Creator (2.0.0) Based on Qt4.7.0 (目前最新的唷)

總算是解決了加上這個micro之後,
總是會有undefined vtable for... 的問題。

追了一些文章,再看一看解決後。
問題是MakeFile.xxx,並沒有跟著更新。
手動刪掉它們,再編譯就行了。但為什麼會這樣呢?

因為MakeFile.xxx 是由一些前期編譯器所產生的,
如qmake, moc, uic, ....,
其中Q_OBJECT,會和signal, slot有關,需要moc先編譯,產生相對應的 .obj (或 .o) 出來。
而link時,會與這些 .obj 或 .o 做Link。而上述的錯誤,是link時的錯誤,而不是語法上的錯誤。

這也就是找到的文章,會說是moc的問題。但再往回追,Qt Creator裡不是有.pro檔,
而且預設的build的命令也下好了,qmake, 然後make....。

所以我覺得,Qt在設計上,很多小細節設計是不良的。
而且上Qt Forum查資料,我最常看到的回應是,再回頭去看Qt的官方文件。

因為常需要看iPhone的官方文件,說真的,Qt的官方文件啊,我覺得還蠻弱的。

沒有留言: