Sto scrivendo una piccola app che richiede alcuni listbox, pulsanti, caselle di testo. Sarà collegato con Boost, MySQL, ecc. Libie statiche C++. Il progetto richiede funzioni win32. Immagino che Winforms andrà bene (MFC e CodeJock richiedono troppo tempo).GUI .NET - C# vs C++/CLI
Quindi C++/CLI sembra perfetto per il lavoro. Basta usare il C++ standard sul lato della GUI. Poi mi imbatto in thread che suggeriscono di scrivere la tua GUI in C#. Quindi utilizzare p/Invoke (lento) o un'interfaccia C++/CLI alle DLL C++ standard.
Esempio: http://social.msdn.microsoft.com/Forums/en-US/clr/thread/6ae877ac-07b4-4d26-8582-de475ee9a5cb
Perché? Che vantaggio c'è nell'usare C# per la tua GUI winforms invece di C++/CLI (sembrano uguali, i comandi sono gli stessi). Quale svantaggio c'è nell'utilizzo dell'eseguibile C++/CLI invece dell'eseguibile standard C++. Posso capire se la compatibilità tra piattaforme è stata un problema, ma in questo caso non è stato possibile utilizzare le funzionalità gestite (oltre alla GUI).
Non capisco perché si dovrebbe usare C# e quindi andare così lontano per separarlo con una "DLL del motore". A meno che, naturalmente, la "DLL del motore" sia stata utilizzata anche per altre applicazioni.
Grazie
P/Invoke non è lento se viene utilizzato correttamente. La nostra app è composta da 30k linee di C# e 200k + di C++ chiamate con P/Invoke e gestisce framerate interattive con animazione/ecc. Devi solo assicurarti che le tue interfacce tra il C# e le DLL siano pulite e minimali. –
@RonWarholic Non ho molta familiarità con P/Invoke, ma non è noioso riscrivere completamente le dichiarazioni di funzione di 200k righe di codice? – MasterMastic
Se si mantiene l'API esposta pulita e stretta, non c'è molta riscrittura. Ci sono migliaia di funzioni nella libreria ma solo 80 circa sono esposte al lato C#. –