Frage

Ich habe eine benutzerdefinierte erstellt Widget Plugin. Das Plugin integriert gut mit Qt Creator, aber wenn ich das Programm kompilieren, erhalte ich diese Fehlermeldung:

"test.h: Keine solche Datei oder das Verzeichnis"

Wo test.h der Name des benutzerdefinierten Widget ist. Was mache ich falsch? Dies ist die * .pro-Datei der Anwendung:

TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui

Dies ist die * .pro-Datei des Plugins:

CONFIG      += designer plugin debug_and_release
TARGET      = $$qtLibraryTarget(testplugin)
TEMPLATE    = lib
HEADERS     = testplugin.h
SOURCES     = testplugin.cpp
RESOURCES   = icons.qrc
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS    += target
include(test.pri)
War es hilfreich?

Lösung

Nach umfangreichen Recherchen, ich auf diesen Thread gestolpert:

http://www.archivum.info/qt-interest@trolltech.com/2010-02/01398/Re-%28Qt-interest%29-Undefined-reference -zu--% 28any-custom-Widget% 29.html

Es stellt sich heraus, dass, wenn Sie ein Plugin kompilieren, die „dll“, dass Sie bekommen nur für Qt Creator / Qt Designer Integration ist ähnlich. Sie kann das nicht Bibliothek verknüpfen gegen. Sie sollten eine andere Bibliothek zur Verfügung stellen, die die Header und den Quellcode oder schließen Sie sie in Ihrem Projekt enthält. Also, um es zusammenzufassen, hier sind die richtigen Schritte ein eigenes Widget bereitgestellt werden:

  1. Erstellen Sie eine Bibliothek mit den Quellen und Header des benutzerdefinierten Widgets. Nennen wir diese Bibliothek A. Alternativ fügen Sie die Quellen und Header zu einem Projekt.
  2. Erstellen Sie das Widget Plugin für Qt Creator / Designer Integration. Wieder ist dieses Plugin für alles, was nicht verwendbar andere als Qt Creator / Designer Integration.
  3. In einem Projekt, müssen Sie die folgenden Zeilen in die * .pro-Datei hinzu:

    LIBS + = C: \ [Pfad zu BIBLIOTHEK ein binäres]
    INCLUDEPATH + = C: \ [Pfad zu BIBLIOTHEK A HEADERS]

Beachten Sie noch einmal, dass Sie in die Bibliothek A verknüpfen, nicht in die Bibliothek, dass Sie erhalten, wenn Sie das Widget Plugin kompilieren.

Andere Tipps

Wenn Sie Ihr Widget in Designer sehen können, Ihr Plugin funktioniert so, wie Sie es festgelegt haben. Ihr Problem ist im Grunde, dass das Programm, das Sie kompilieren nicht die Header-Datei für das finden Widget Sie werden über das Plugin hinzufügen. Die Antwort ist wahrscheinlich eines von zwei Dingen:

  • Fügen Sie mehr von dem Pfad zu dem Header in Ihrem Plugin, so dass Programme, die das Widget verwenden entsprechend den Header finden.
  • Fügen Sie den Pfad zu der Header-Datei als ein Pfad zu Ihrem Compiler enthalten, so dass die Compiler die entsprechenden Header finden können, wenn die Programmdateien auf sie verweisen.

ich mit dem gleichen Problem konfrontiert. Dann habe ich versucht, von Plugin-DLL in Anwendungen alle Header-Dateien und CPP-Dateien hinzufügen Projekt feste Datei explicitly.it das Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top