链接QT创建插件编辑器 /荧光笔

linking Qt Creator plugin editor / highlighter

本文关键字:荧光笔 编辑器 插件 QT 创建 链接      更新时间:2023-10-16

我正在处理QT创建者插件,该插件通过提供自定义的编辑器等来增加对某些类型的文件的支持。texteditor :: basetexteditor和texteditor :: baseetexteditorwidget。

最终,我将创建和使用专业的荧光笔和其他东西,但是现在我想利用其他QT Creator插件中的内容,这就是我遇到麻烦的地方。

特别是我想使用texteditor :: internal ::荧光笔,它可以加载和利用kate文件。我已经在使用Texteditor插件中的其他类,所以我有

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

添加到我的项目文件中。内部texteditor.pri一切似乎都不错

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

确实,我能够编译我的编辑器(这取决于文本插件中的内容)。

textededitor ::内部::荧光笔 - 据我所知,它是在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

我在做什么错?我需要声明更多的依赖项吗?我可以使用一个命令来强制对象文件的文件夹在编译时将其放在我的路径中?

thnaks!

"内部"名称空间中的类和方法往往不会导出,因此它们在提供它们的插件之外不可用。检查类定义:类关键字和类名称之间是否具有" sosity_export"?如果没有,那么您就不幸了。

默认情况下,尽可能少的符号被导出:这使我们有机会实际更改周围的内容,而不必担心将代码在插件之外分解。它还减少了加载时间。如果您有要导出的符号的用例:请随时在QT创建者邮件列表上询问,或者 - 更好 - 为CodereView.qt-project.org提供一个补丁,将类移出内部的类名称空间并导出符号。

一个回答此类问题的更好的地方是FreeNode网络上的QT创建者邮件列表和#QT-CREATOR IRC频道。