簡體   English   中英

鏈接Qt Creator插件編輯器/熒光筆

[英]linking Qt Creator plugin editor / highlighter

我正在開發一個qt Creator插件,該插件通過提供定制的編輯器等來添加對某些類型文件的支持。現在,它注冊了一個新的IEditorFactory,該IEditorFactory生成基於TextEditor :: BaseTextEditor和TextEditor :: BaseTextEditorWidget生成的編輯器。

最終,我將創建並使用專用的熒光筆和其他東西,但是現在我想利用其他qt creator插件中的東西,這是我遇到麻煩的地方。

特別是我想使用TextEditor :: Internal :: Highlighter,它可以加載和利用kate文件。 我已經在使用TextEditor插件中的其他類,所以我有

include($$QTCREATOR_SOURCES/src/plugins/texteditor/texteditor.pri)

添加到我的項目文件中。 在texteditor.pri內部,一切似乎都很好

include(texteditor_dependencies.pri)
LIBS *= -l$$qtLibraryName(TextEditor)

並且確實可以編譯我的編輯器(這取決於texteditor插件中的內容)。

據我所知,與TextEditor :: Internal :: Highlighter的唯一區別是,它位於texteditor插件的子文件夾中。 這應該沒問題,而且目標文件似乎都位於同一目錄中,但是當我說

new TextEditor::Internal::Highlighter()

(就像在texteditor / plaintexteditor.cpp中所做的一樣)我收到鏈接器錯誤

Undefined symbols for architecture x86_64:
  "TextEditor::Internal::Highlighter::Highlighter(QTextDocument*)", referenced from:
      MyPlugin::MyEditorWidget::MyEditorWidget(QWidget*)in myeditor.o
      MyPlugin::MyEditorWidget::MyEditorWidget(QWidget*)in myeditor.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

我究竟做錯了什么? 我還要聲明更多的依賴項嗎? 有沒有我可以用來在編譯時強制將目標文件的文件夾放在我的路徑中的命令?

na!

“內部”名稱空間中的類和方法往往不會被導出,因此在提供它們的插件之外不可用。 檢查類定義:class關鍵字和類名之間是否有“ SOMETHING_EXPORT”? 如果沒有,那么您就不走運了。

默認情況下,導出的符號越少越好:這使我們有機會進行實際更改,而不必擔心在插件外部破壞代碼。 它還可以減少加載時間。 如果您有導出符號的用例:請隨時在Qt Creator郵件列表中詢問,或者-更好的是-提供對codereview.qt-project.org的補丁,以將該類移出Internal命名空間並導出符號。

Qt Creator郵件列表和freenode網絡上的#qt-creator IRC通道是獲得此類回答的一個更好的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM