C# als GUI und C++ als eigentlichen Code

06/16/2015 12:08 KingwondA#1
Hi,
ich wollte fragen, ob es gut ist, wenn ich mit C# die GUI für mein Programm erstelle, und mit .dll's den eigentlichen Code in C++ programmiere.

Können leicht Fehler auftreten, oder gibt es bessere Lösungen?
Bitte kommt nun nicht mit der WinAPI -denn die find ich kacke-
06/16/2015 13:12 #[Alex]Sascha#2
Wenn es um Performance geht kannst du es machen. Kommt natürlich auf dein Projekt an.

Möglichkeiten gibt es durchaus:
- P/Invoke [Only registered and activated users can see links. Click Here To Register...]
- C++/CLI wrapper
- COM interface

Wenn es allerdings nicht um eine gute Performance geht bzw. eine Performance die du mit C# erreichen kannst würde ich davon abraten.
Wenn es darum geht, dass du C# nicht wirklich lernen möchtest oder aus welchem Grund auch immer würde ich davon abraten.
Bei Programmen bei denen Performance nicht ein Key factor ist würde ich das gesamte Projekt in C# bzw. .Net Languages wie F#, VB.Net, etc. schreiben wobei du auch gute performance mit C# erreichen kannst (für Windows apps währe auch .net native interessant). C# bietet einige Vorteile gegenüber C++ die dir das Entwickeln der Applikation erleichtern (Garbage Collection, große Standard Bibliotek, usw...). Ich würde wenn möglich auf Frontend in C#, Logic in C++ verzichten, da es den Entwicklungsprozess verlangsamen kann.

Quote:
Originally Posted by KingwondA View Post
Bitte kommt nun nicht mit der WinAPI -denn die find ich kacke-
Vermutlich wirst du in den nächsten Jahren nicht um die win32 api herumkommen.
06/16/2015 13:55 KingwondA#3
Geht um Performance umso schneller umso besser :)
06/16/2015 15:48 warfley#4
Dürfte man fragen in welche Richtung das Projekt denn geht? Wenn du z.B. einen Echtzeitprozess haben möchtest (z.B. zum steuern von Gerätschaften) und diesen über ein GUI steuern möchtest würde sich eher anbieten den Prozess einzeln zu machen und die GUI Anwendung separat via IPC kommunizieren zu lassen.

Wenn du einfach nur einen Algorithmus hast der sehr lange dauert (etwa quadratisch oder gar exponentiell zur Eingabe) wird C++ selbst wenn es 10 mal so schnell wäre nur einen sehr geringen unterschied zu C# machen.

Normalerweise im haushaltsgebrauch wird der Geschwindigkeitsunterschied zweier Sprachen oder Systeme nur selten ins Gewicht Fallen. Und Sprachen zu mischen ist nie so sehr schön
06/16/2015 18:25 KingwondA#5
Quote:
Originally Posted by warfley View Post
Dürfte man fragen in welche Richtung das Projekt denn geht? Wenn du z.B. einen Echtzeitprozess haben möchtest (z.B. zum steuern von Gerätschaften) und diesen über ein GUI steuern möchtest würde sich eher anbieten den Prozess einzeln zu machen und die GUI Anwendung separat via IPC kommunizieren zu lassen.

Wenn du einfach nur einen Algorithmus hast der sehr lange dauert (etwa quadratisch oder gar exponentiell zur Eingabe) wird C++ selbst wenn es 10 mal so schnell wäre nur einen sehr geringen unterschied zu C# machen.

Normalerweise im haushaltsgebrauch wird der Geschwindigkeitsunterschied zweier Sprachen oder Systeme nur selten ins Gewicht Fallen. Und Sprachen zu mischen ist nie so sehr schön
RunPE Crypter, wobei ich viele sehe die mit Visual Basic erstellt werden
06/17/2015 20:46 ლʕಠᴥಠʔლ#6
Lade deine C++ assembly und p/invoke die methoden. Ist sehr simpel.
06/18/2015 17:49 hazejp#7
Quote:
Originally Posted by ლʕಠᴥಠʔლ View Post
Lade deine C++ assembly und p/invoke die methoden. Ist sehr simpel.
Ich kann nur zustimmen, P/Invoke ist in dem Fall die beste Lösung.
COM o.Ä. finde ich für so was irgendwie unnötig.