,你沒有得到一個編譯錯誤,但未定義的引用通常意味着您的項目知道在哪裏的頭文件是事實,但它不知道包含已編譯源代碼的庫在哪裏。
我從來沒有編寫了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
目錄的源文件和頭文件使用HEADERS
和SOURCES
變量自己的.pro文件。但我不確定這是否會影響其他插件(包括projectexplorer本身)。
選項C)
有可能是一種方法,包括projectexplorer.pro
文件,讓你有一個主項目,首先建立項目資源管理庫,然後自己的插件。這將是最安全的方式,因爲它確保了Project Explorer庫的構建和最新,然後才能將自己的項目鏈接到它。 但是我對此有限的經驗。
如果有人閱讀本文,可以對此選項進行詳細說明,請隨時編輯或提供您自己的答案。
未定義的引用與頭文件無關,但與鏈接,所以如何鏈接到libqtcreator的API將更相關。 –
#FrankOsterfeld我想我應該提供一些lib路徑,對嗎? – smallB
你在'.pro'文件的'LIBS'命令中聲明瞭什麼? – cmannett85