Hallo!
Ich habe es tatsächlich hingekriegt, dass ich mit nmake ein Plugin für Designer übersetzt bekommen habe - analogClock sei dank. Das integriert sich jetzt sehr schön und ich kann es gut benutzen.
Nur verwende ich unter Windows Visual Studio 2005 und wenn ich nun dieses Widget verwende, dann erhalte ich vom Linker noch ein paar undefinierte Symbole. Wahrscheinlich muss ich den Code ja noch durch moc jagen - aber was und wie genau? Habe da schon ein wenig was versucht, habe es aber wohl falsch gemacht. Vorallem habe ich das Plugin ja von Hand mit qmake und nmake übersetzt. Vielleicht läßt sich der Vorgang ja auch automatisieren, so dass sich das Widget neu erstellt, wenn ich es ändere.
Deshalb wollte ich fragen, ob jemand weiss, wo das mal dargestellt wird. Wie ich also ein self-made Widget in VS am besten nutze. Oder läßt sich das mit wenigen Worten erklären?
Grüße!
Selbst erstelltes Widget in VS integrieren
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Hi!
Ich dachte fragste mal ganz allgemein, vielleicht gibt es ja eine ähnliche Anleitung im Netz, wie es sie für das Einrichten der Entwicklungsumgebung VS gibt.
Ich verwende mal die analogClock aus $(QTDIR)/examples/designer, damit ich nachher nicht in meinem Quellcode einen Fehler gehauen habe. Kann die dann ja später auswechseln. Jedenfalls habe ich die dll für Designer ja schon kreirt. Jetzt verwende ich das auf einem QMainWindow.
Die analogclock.cpp und analogclock.h habe ich im Projekt eingefügt. Dann erhielt ich Linkermeldungen über fehlende Symbole. Also dachte ich mir: Da fehlt sicherlich der moc. In der Umgebung eingefügt, dass die .h zusätzlich durch den Befehl $(QTDIR)\bin\moc.exe "$(InputPath)" -o "$(InputDir)/generated_moc/moc_$(InputName).cpp" laufen muss. Die moc_analogclock.cpp aus dem Unterverzeichnis fügte ich dann ebenfalls zum Projekt hinzu.
Damit gibt es jetzt eine Reihe Fehlermeldungen. Die erste davon lautet:
Kann damit jemand was anfangen? Das wird wohl irgendwie damit zu tun haben, dass er jetzt statisch binden will und QDESIGNER_WIDGET_EXPORT wahrscheinlich auf dll hinausläuft, oder?
Grüße!
Ich dachte fragste mal ganz allgemein, vielleicht gibt es ja eine ähnliche Anleitung im Netz, wie es sie für das Einrichten der Entwicklungsumgebung VS gibt.
Ich verwende mal die analogClock aus $(QTDIR)/examples/designer, damit ich nachher nicht in meinem Quellcode einen Fehler gehauen habe. Kann die dann ja später auswechseln. Jedenfalls habe ich die dll für Designer ja schon kreirt. Jetzt verwende ich das auf einem QMainWindow.
Die analogclock.cpp und analogclock.h habe ich im Projekt eingefügt. Dann erhielt ich Linkermeldungen über fehlende Symbole. Also dachte ich mir: Da fehlt sicherlich der moc. In der Umgebung eingefügt, dass die .h zusätzlich durch den Befehl $(QTDIR)\bin\moc.exe "$(InputPath)" -o "$(InputDir)/generated_moc/moc_$(InputName).cpp" laufen muss. Die moc_analogclock.cpp aus dem Unterverzeichnis fügte ich dann ebenfalls zum Projekt hinzu.
Damit gibt es jetzt eine Reihe Fehlermeldungen. Die erste davon lautet:
Davor gibt es noch Warnung zur "Inkonsistente DLL-Bindung". Die angezeigte Stelle lautet in der generierten moc:moc_analogclock.cpp(36) : error C2491: 'AnalogClock::staticMetaObject': Definition von Statisches Datenmember für dllimport nicht zulässig
Code: Alles auswählen
const QMetaObject AnalogClock::staticMetaObject = {
{ &QWidget::staticMetaObject, qt_meta_stringdata_AnalogClock,
qt_meta_data_AnalogClock, 0 }
};Grüße!
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Hallo!
Jaein, eher aus Unwissenheit. Ich wollte es schon schön im Designer benutzen und später in meiner Anwendung einfach nutzen. Aus deiner Antwort höre ich aber raus, dass ich also gegen die dll binden muss? Ich habe das jetzt mal so gemacht und die customwidgetplugin.dll eingebunden- die, aus den examples. Jetzt erhalte ich - trotz ausreichender Zugriffberechtigungen - folgende Meldung:
Grüße!
Jaein, eher aus Unwissenheit. Ich wollte es schon schön im Designer benutzen und später in meiner Anwendung einfach nutzen. Aus deiner Antwort höre ich aber raus, dass ich also gegen die dll binden muss? Ich habe das jetzt mal so gemacht und die customwidgetplugin.dll eingebunden- die, aus den examples. Jetzt erhalte ich - trotz ausreichender Zugriffberechtigungen - folgende Meldung:
Was bedeutet das? Warum klappt hier das Lesen erst nach 688 Bytes nicht?C:\Programme\Qt4/plugins/designer\customwidgetplugin.dll : fatal error LNK1107: Ungültige oder beschädigte Datei: Lesen bei 0x2B0 nicht möglich.
Grüße!
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: