Ich soll eine Anwendung auf Windows entwickeln. Das habe ich vorher noch nie gemacht ;-)
Ich muss eine schwere Audiokalkulation machen, die in C / C ++ geschrieben werden muss. Dieser Teil wird ein Raumkorrekturalgorithmus sein, der derzeit etwa 10 Sekunden pro Kanal benötigt, um in Matlab zu laufen. Es muss in C / C ++ geschrieben werden, da es später auf einen DSP portiert werden kann, der in C / C ++ programmiert werden muss.
Außerdem brauche ich eine GUI, um Berechnungen zu überprüfen, Ergebnisse zu visualisieren und Berechnungsparameter zu ändern. Der schwierige Teil dieser GUI wird viel Plotten von Spektren, Spektrogrammen, Audio-Wellenformen und dergleichen sein.
Nun habe ich gehört, dass WPF in Windows GUIs der letzte Schrei ist, aber es scheint auf C # beschränkt zu sein. Gibt es eine einfache Möglichkeit, meinen C / C ++ Code mit irgendeinem C # GUI Code zu integrieren? Oder soll ich lieber WinForms nehmen und einfach alles in C ++ schreiben? Oder würde Qt genauso gut funktionieren und einige plattformübergreifende Fähigkeiten "kostenlos" zur Verfügung stellen?
Ich habe einige Erfahrung mit C / C ++, Matlab und VST-Entwicklung, aber ich habe nie eine echte Anwendung geschrieben und ehrlich, ich weiß nicht einmal wo ich anfangen soll.
Vielen Dank im Voraus!
Ich denke, der größte Nachteil bei der Verwendung von WPF oder WinForms ist, dass Sie in zwei Programmiersprachen programmieren müssen, was einen großen logistischen Mehraufwand bedeutet.
Ich habe diese Art von Argument schon einmal gesehen: benutze C oder C ++ für eine niedrige Stufe, etwas anderes für eine hohe Stufe. In diesem Fall ist Qt / C ++ so hoch wie WPF / WinForms, mit dem Vorteil der sehr einfachen Integration von UI in Ihren anderen C ++ - Code.
Für Spektrogramme und andere Graphen sehen Sie Qwt .
P.S: WPF ist nicht der letzte Schrei unter Windows, der Markt ist ziemlich fragmentiert und WPF ist eines der am wenigsten genutzten GUI Toolkits. Der meiste Code verwendet MFC, WTL, Delphi, Win32, etc.
Ich habe keine Erfahrung mit QT, aber ich kann sagen, dass WPF gut ist, aber es ist nicht so gut für Anwendungen mit hoher CPU-Auslastung, und Sie können Ihr c / c ++ nicht einfach mit WPF integrieren.
Es wird eine riesige Lernkurve geben und Sie müssen COM-Schnittstellen schreiben, um mit C # / WPF und Ihrem nativen Code zu kommunizieren. oder Visual C ++ .Net CLI, was ziemlich schwierig ist und weniger Tutorials verfügbar sind.
Aber das Problem ist, dass Sie keinen guten Support bekommen werden, weil viele Leute nur C #, Datenbank-Apps nur mit WPF / WinForms benutzen. Der beste Weg zu tun ist, können Sie COM-DLLs schreiben, um mit WPF zu integrieren, aber das wird schwierig sein.
Stattdessen gibt es jetzt verschiedene Tools in MFC, und viele andere kommerzielle Bibliotheken sind auch verfügbar, um gute UI in C ++ MFC zu schreiben, wo die Integration einfacher wird, da Sie mit C ++ vertraut sind.
Oder sonst Qt, wenn Sie es bereits wissen.
Bibliotheken:
Es kann viele geben, Sie können nach "MFC UI Elements", Bibliothek usw. suchen. Ich habe Prof-UIS schon 2003-4 benutzt, sie sind gut.
WPF bindet Sie an Windows, aber nicht an eine bestimmte Sprache. Sie können WPF-Anwendungen in C #, VB.NET, Managed C ++ oder jeder anderen .NET-Sprache schreiben.
Winforms ist in ähnlicher Weise an Windows gebunden, aber Sie können Ihre Anwendung möglicherweise so schreiben, dass sie auch auf Mono
Interop zwischen .NET und nativen Anwendungen ist sehr stark, aber es ist sicher, dass Sie zumindest ein wenig Schmerzen verursachen. Auf der anderen Seite kann die Implementierung der Schnittstelle in einer nativen Umgebung Ihnen noch mehr Schmerzen bereiten.
Wenn Sie froh sind, dass Ihre GUI an Windows und .NET gebunden ist, ist WPF die beste Option für hochvisuelle Anwendungen. Wenn Sie keine Abhängigkeit von .NET oder Windows wünschen, scheint Qt Ihre einzige Option zu sein.