2012-05-25 12 views
5

¿Es posible incluso crear una capa GUI en C# y el resto de la aplicación en C++? Si no estoy equivocado, uno de los software antivirus ha realizado GUI en Delphi. ¿Cómo podría hacerse?¿Es posible? GUI en C#, aplicación en C++

+1

¿Por qué motivo? –

+0

Sí, Visual Studio se escribió en C++ con una interfaz de usuario de WPF. –

Respuesta

4

Usted tiene varias opciones para hacerlo, incluyendo:

  1. Uso P/Invoke a poner en el archivo DLL de C++ C#.
  2. Expone una interfaz COM desde el código nativo y llámala desde C# utilizando COM interop.
  3. Escriba un servicio nativo de Windows y llámelo desde el código administrado.
  4. Use C++/CLI para escribir una biblioteca administrada en C++, a la que puede vincular fácilmente desde C#.

Si está empezando desde cero, la opción 4 es probablemente su mejor opción. (Aparte de solo escribir todo en C#, eso es). Las tres primeras opciones implican disputas adicionales y gastos generales, y probablemente no valen la pena si no tiene un motivo convincente, como la necesidad de interactuar con una biblioteca nativa existente o que tenga alguna necesidad de una arquitectura orientada a servicios.

3

escribe la lógica de la aplicación en C++ dll, luego usa pinvoke desde C# para hablar con el dll.

+0

El problema con esto es que es muy difícil usar mucho más que una API de estilo c con invocación de plataforma. Tienes que lidiar con nombres de funciones mutiladas y aún tienes que lidiar con el código orientado a objetos de manera diferente. Un envoltorio de com probablemente sería una mejor apuesta. Por supuesto, siempre puede envolver el código orientado a objetos en una API de estilo C. –

+0

@JonathanHenson tiene usted razón, señor. Buena observación. –

4

Si escribe la lógica de su negocio en C++/CLI, y su UI en C#, no debería ser un problema. Si desea escribir en puro ANSI C++, es posible que deba escribir envoltorios C++/CLI alrededor de los objetos que desea exponer a C#.