2013-01-11 53 views
1

我想從ProjectExplorer :: ProjectExplorerPlugin子類,但我得到錯誤告訴我有關未定義的引用。任何想法如何解決它?未定義的參考 - 我包括正確的標題

class MyPluginPlugin : public ProjectExplorer::ProjectExplorerPlugin 
{ 
    Q_OBJECT 
    ... 
}; 

錯誤:未定義的引用`小鬼 __ZN15ProjectExplorer21ProjectExplorerPluginC2Ev」

+2

未定義的引用與頭文件無關,但與鏈接,所以如何鏈接到libqtcreator的API將更相關。 –

+0

#FrankOsterfeld我想我應該提供一些lib路徑,對嗎? – smallB

+0

你在'.pro'文件的'LIBS'命令中聲明瞭什麼? – cmannett85

回答

2

,你沒有得到一個編譯錯誤,但未定義的引用通常意味着您的項目知道在哪裏的頭文件是事實,但它不知道包含已編譯源代碼的庫在哪裏。

我從來沒有編寫了Qt Creator的一個插件,但我已經採取了快速看一下它的源代碼結構,我看到以下選項:


選項A)

有Qt Creator源文件中的projectexplorer.pro文件在src/plugins/projectexplorer下。您可以手動構建該項目以獲取ProjectExplorer.lib(加上.dll或.a),然後引用此庫。
示例:假設庫將與.pro文件在同一目錄中創建(我不知道它是否如此),並且您使用Qt Creator的源代碼在src/plugins/myplugin下創建了您的插件,您可以像這樣定義您的LIBS變量:

LIBS += -L../projectexplorer \ 
     -lProjectExplorer 

第一行上加「../projectexplorer」作爲附加庫目錄和所述第二線將‘ProjectExplorer’作爲一個庫中的任何定義的目錄來搜索(它自動將特定於操作系統的文件像Windows上的.lib等擴展名)。

顯然,如果您的項目或圖書館位於其他地方,則需要相應地更改第一行。


選項B)

你可以包括projectexplorer目錄的源文件和頭文件使用HEADERSSOURCES變量自己的.pro文件。但我不確定這是否會影響其他插件(包括projectexplorer本身)。


選項C)

有可能是一種方法,包括projectexplorer.pro文件,讓你有一個主項目,首先建立項目資源管理庫,然後自己的插件。這將是最安全的方式,因爲它確保了Project Explorer庫的構建和最新,然後才能將自己的項目鏈接到它。 但是我對此有限的經驗。

如果有人閱讀本文,可以對此選項進行詳細說明,請隨時編輯或提供您自己的答案。

+0

嗨,感謝您的回答,我會盡快完成我的qt系統的構建。再次感謝。 – smallB

+0

偉大的建議。在選項A中添加Lib後,問題就消失了。我真的很難找出什麼是未定義的參考。謝謝! – Akiva