1

ProjectExplorer :: ProjectExplorerPluginからサブクラス化しようとしていますが、未定義の参照について通知するエラーが発生します。それを修正する方法はありますか?

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

エラー: `imp__ZN15ProjectExplorer21ProjectExplorerPluginC2Ev'への未定義参照

4

2 に答える 2

2

コンパイル エラーが発生しないが、未定義の参照が発生するという事実は、通常、プロジェクトがヘッダー ファイルの場所を認識しているが、コンパイル済みのソース コードを含むライブラリの場所を認識していないことを意味します。

Qt Creator 用のプラグインを作成したことはありませんが、そのソース コード構造をざっと見てみると、次のオプションが表示されます。


オプション A)

projectexplorer.proの下に Qt Creator のソースにファイルがありますsrc/plugins/projectexplorer。ProjectExplorer.lib (および .dll または .a) を取得し、このライブラリを参照するために、そのプロジェクトを手動でビルドできます。
例: ライブラリが .pro ファイルと同じディレクトリに作成され (そのようなものかどうかはわかりません)、Qt Creator のソースの下にプラグインを作成したと仮定すると、次のように変数src/plugins/mypluginを定義します。LIBS

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

最初の行は「../projectexplorer」を追加のライブラリ ディレクトリとして追加し、2 行目は「ProjectExplorer」をライブラリとして追加して、定義されたディレクトリのいずれかを検索します (Windows では .lib などの OS 固有のファイル拡張子が自動的に追加されます)。 )。

プロジェクトまたはライブラリが別の場所にある場合は、それに応じて最初の行を変更する必要があります。


オプション B)

および変数を使用して、ディレクトリのソース ファイルとヘッダー ファイルをprojectexplorer独自の .pro ファイルに含めることができます。ただし、これが他のプラグイン (projectexplorer 自体を含む) に干渉しないかどうかはわかりません。HEADERSSOURCES


オプション C)

projectexplorer.proファイルをインクルードして、最初にプロジェクト エクスプローラー ライブラリをビルドし、次に独自のプラグインをビルドするマスター プロジェクトを作成する方法があると思われます。独自のプロジェクトがリンクされる前に Project Explorer ライブラリがビルドされて最新の状態になるため、これが最も安全な方法です。ただし、これに関する経験は限られています。

これを読んでいる人がこのオプションについて詳しく説明できる場合は、自由に編集するか、独自の回答を提供してください。

于 2013-01-11T10:40:33.090 に答える
1

Commit: #66a3553 - make library and plugin dependencies declarativeを含む 2013 年 4 月以降にコード化されたソースからビルドされた Qt Creator を使用している場合、.pro ファイルでプラグインの依存関係を指定するだけです。

# myplugin.pro
QTC_PLUGIN_DEPENDS += \
    coreplugin \
    projectexplorer
于 2013-10-28T21:54:55.087 に答える