Hallo,
habe mir ein eigenes analoges Instrument erstellt. Das kompelieren und öffnen in einem Fenster funktioniert. Habe dann ein plugin für den designer erstellt, welches er auch erfolgreich einlesen konnte. Nun versuche ich dieses Instrumen in einem Mainwindow zum laufen zu bekommen. Erste fehlermeldung war, dass er die .h Datei des Instruments nciht finden konnte. Füge ich die Datei zu meinem Projekt hinzu war die Meldung weg. Meine Frage ist, ob ich normalerweise die .h Datei überhaupt benötige. Habe doch extra ein Plugin für den Designer erstellt? Nachdem ich nun die .h Datei hinzugefügt habe, kommt die Fehlermeldung: error C2061: syntax error: identifier 'DeltaWindDirection'. DeltaWindDirection ist die Klasse meines Instruments. Ich muss dazu sagen, dass ich es mit dem QT AddIn und VS08 mache. In der ui_project.h versucht er ein neues Object von DeltaWindDirection auf dem Heap zu erzeugen. Hier mal die Stelle zu der mich die Fehlermeldung bringt.
Wenn man eine Klasse benutzt muss man auch den zughörigen Header einbinden. Zwar nicht direkt zum Projekt aber egal.
Der Rest... naja ein wenig C++ würde ich sagen
Also ich hab mich noch nie mit erstellen von Plugins für den Designer beschäftigt, aber ein paar Dinge weiß man ja trotzdem.
1. Wenn du das Plugin erstellst, erstellst du eine Bibliothek (bei Windows zum Beispiel eine DLL), dass der Code aus dem Programm augelagert ist und dort nicht mehr mit kompiliert werden muss. Deswegen muss der Kompiler aber trotzdem wissen, welche Funktionen es in der DLL gibt und dafür musst du die Header-Datei einbinden.
2. @Christian: Das ist der vom Designer erstellte Code, die Variable ist bestimmt vorher als Zeiger deklariert worden.
3. Schaue bitte nochmal die Doku durch, wie genau man Plugins in den Designer einbindet, da sollte dann auch irgendwo stehen, wie man die Header richtig einbindet...
hi,
also, der kram kommt ja nciht von mir, das macht VS08 selber. Aus der .ui datei erstellt er eine ui_Dateiname.h und in der steht der kram drin, den ich geposted habe. Problem ist, dass er jedes mal, wenn ich kompeliere aus der .ui eine ui-Dateiname.h erstellt. Die Header also umzuschreiben bringt ncihts, da er sie beim nächsten Kompelieren eh wieder neu erstellt.
Hi, ja sorry, hatten wohl zur selben Zeit geantwortet. Werde ich jetzt nochmal gucken.
Die Variable ist vorher schon deklariert. Finde komsich, dass die Variable die selbe Bezeichnung erhält, wie auch die Klasse hat. Vielelicht verwirrt dass den Compiler. Werde mal gucken ob ich beim erstellen des PlugIn irgentwo die Bezeichnungen vertauscht habe oder so.
ein Problem war, dass Variable und KLasse den gleichen Namen hatten. Nun erhalte ich zwei neue fehlermeldungen, mit denen ich nicht viel anfangen kann:
Error 1 error LNK2019: unresolved external symbol "public: __thiscall DeltaWindDirection::DeltaWindDirection(class QWidget *)" (??0DeltaWindDirection@@QAE@PAVQWidget@@@Z) referenced in function "public: void __thiscall Ui_TextinstrumenClass::setupUi(class QMainWindow *)" (?setupUi@Ui_TextinstrumenClass@@QAEXPAVQMainWindow@@@Z) textinstrumen.obj
Error 2 fatal error LNK1120: 1 unresolved externals C:\Dokumente und Einstellungen\acuser3\Eigene Dateien\Visual Studio 2008\Projects\Text instrumen\Release\Text instrumen.exe
die Docu habe ich durch und kann nichts finden, was falsch sein könnte.