2012-07-05 30 views
12

He intentado todo el día obtener GTK # trabajando en Visual Studio 2010 en Windows Server 2008 R2 x64 para poder comenzar a escribir agradables aplicaciones de GUI multiplataforma, pero estoy algo nuevo a C# y estoy teniendo un mundo de problemas.GTK # en Visual Studio 2010

Instalé el último Mono para Windows que incluye GTK #. También instalé un perfil Mono 2.10.8 para ser el marco de trabajo objetivo de mi proyecto siguiendo la guía desde aquí: http://erictummers.wordpress.com/2012/01/25/target-mono-from-visual-studio/

Creé una nueva aplicación de Windows Forms y eliminé referencias a los formularios de Windows y agregué referencias para GTK # cosas, siguiendo vagamente la guía de aquí: http://jrwren.wrenfam.com/blog/2008/11/01/gtk-in-visual-studio-2008-on-vista-x64/

También agregué una referencia a gtk-dotnet además de los de esa guía.

Este es el código completo de mi solicitud:

using System; 
using System.Runtime.InteropServices; 
using System.Collections.Generic; 
using System.Linq; 
using Gtk; 

namespace GridToGo 
{ 
    static class Program 
    { 
     [STAThread] 
     static void Main() 
     { 
      Application.Init(); 
      Window myWin = new Window("My first GTK# Application! "); 
      myWin.Resize(200, 200); 
      myWin.Destroyed += new EventHandler(myWin_Destroyed); 
      Label myLabel = new Label(); 
      myLabel.Text = "Hello World!!!!"; 
      myWin.Add(myLabel); 
      myWin.ShowAll(); 
      Application.Run(); 
     } 

     static void myWin_Destroyed(object sender, EventArgs e) 
     { 
      Application.Quit(); 
     } 
    } 
} 

Cuando trato de ejecutar esto con cualquier configuración, me sale el siguiente excepción:

System.TypeInitializationException was unhandled 
    Message=The type initializer for 'Gtk.Application' threw an exception. 
    Source=gtk-sharp 
    TypeName=Gtk.Application 
    StackTrace: 
     at Gtk.Application.Init() 
     at GridToGo.Program.Main() in F:\visual-studio\GridToGo\GridToGo\Program.cs:line 13 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: System.DllNotFoundException 
     Message=Unable to load DLL 'glibsharpglue-2': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
     Source=glib-sharp 
     TypeName="" 
     StackTrace: 
      at GLib.Thread.glibsharp_g_thread_supported() 
      at GLib.Thread.get_Supported() 
      at Gtk.Application..cctor() 
     InnerException: 

no puedo encontrar la manera de llegar ¡para encontrar ese dll! Incluso intenté copiar 4 copias de la DLL en prácticamente todas las carpetas de la solución con los siguientes nombres: glibsharpglue-2glibsharpglue-2.dllglibsharpglue-2.oglibsharpglue-2.o.dll! También intenté instalar el paquete GTK all-in-one desde el sitio GTK y agregué su carpeta bin a mi ruta del sistema, y ​​luego copié los mismos 4 dlls en esa carpeta, todo sin suerte.

¿Algún consejo para mi problema? Siento que me estoy perdiendo algo grande aquí. > _ <

Respuesta

19

¡Lo descubrí! Mono para Windows fue completamente innecesario. GTK # for .NET es lo que necesitaba. Para cualquier persona en el futuro que desean establecer su entorno Windows para plataformas GTK # desarrollo, aquí están los pasos que hemos seguido:

  1. instalar un objetivo del proyecto Mono con direcciones de aquí: http://erictummers.wordpress.com/2012/01/25/target-mono-from-visual-studio/
  2. Instalación de GTK # para .NET desde el sitio oficial de descarga de Mono.
  3. Instalar Glade/GTK + para Windows, proyecto de sourceforge aquí: http://sourceforge.net/projects/gladewin32/
  4. Cree un nuevo proyecto C# dirigido a Mono.
  5. Consulte los ensamblajes necesarios para su proyecto desde donde instaló GTK # para .NET.
+1

Aunque Windows's Forms de Mono es compatible con crossplatform no está del todo mal ... – ruffin

+0

Gracias por volver y explicar! – heltonbiker

+0

Tengo curiosidad, ¿por qué quieres apuntar mono? ¿Hay algún problema con el uso del compilador de Visual C# de Microsoft? Si las cosas son lo suficientemente compatibles, creo que el compilador de Mono o de Microsoft puede generar un binario que se puede ejecutar en el tiempo de ejecución de Mono o en el tiempo de ejecución .NET de Microsoft. –