我想在Visual Studio中的WinForms中使用Mono(GTK)编译的简单dll。 我在VS中添加了对gtk-sharp,Mono.Cairo / Posix,gtk-dotnet的引用,atk-sharp 我开始使用单声道,在我继续处理单声道更重要的事情之前我必须确保写入的dll mono,将与Visual Studio中的其他项目一起使用。有人会给出一个代码示例,它会在WinForms中打开一个windows / dilalog吗? 当我运行我的代码时,我收到一个错误:
I would like to use simple dll compiled in Mono(GTK), in WinForms in Visual Studio. I added references in VS to gtk-sharp, Mono.Cairo/Posix, gtk-dotnet, atk-sharp I'm starting to work with mono and before I proceed to work on more important things in mono I have to make sure that the dlls written in mono, will work with other projects in Visual Studio. Could someone give an example of code that will open a the windows/dilalog in WinForms? When I'm running my code, i get an error:
System.AccessViolationException was unhandled HResult=-2147467261 Message=Attempted to read or write protected memory. Often, this indicates that the other memory is corrupt. Source=gtk-sharp StackTrace: w Gtk.Dialog.gtk_dialog_run(IntPtr raw) w Gtk.Dialog.Run() w dllTest.MessageBox.Show(String Msg) w dllTest.MyClass.Test() w AllegroParser.Form1.Form1_Load(Object sender, EventArgs e) w C:\Users\KrzysiekJ\Documents\Visual Studio 2010\Projects\AllegroParser\AllegroParser\Form1.cs:wiersz 23 w System.Windows.Forms.Form.OnLoad(EventArgs e) w System.Windows.Forms.Form.OnCreateControl() w System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) w System.Windows.Forms.Control.CreateControl() w System.Windows.Forms.Control.WmShowWindow(Message& m) w System.Windows.Forms.Control.WndProc(Message& m) w System.Windows.Forms.ScrollableControl.WndProc(Message& m) w System.Windows.Forms.ContainerControl.WndProc(Message& m) w System.Windows.Forms.Form.WmShowWindow(Message& m) w System.Windows.Forms.Form.WndProc(Message& m) w System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) w System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) w System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)Dll代码:
Dll code:
namespace dllTest { public class MyClass { public MyClass () { } public void Test () { MessageBox.Show ("test"); } } public class MessageBox { public static void Show(string Msg) { MessageDialog md = new MessageDialog (null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, Msg); md.Run (); md.Destroy(); } } }WinForms中的简单应用:
Simple app in WinForms:
dllTest.MyClass mc = new dllTest.MyClass(); mc.Test();推荐答案
问题解决了。 我的解决方案非常简单: Problem solved. My solution is very simple: Gtk.Application.Init(); dllTest.MyClass mc = new dllTest.MyClass(); mc.Test(); Gtk.Application.Run();
两行代码,一切正常。
Two lines of code and everything works fine.
更多推荐
如何在Windows Forms项目中使用Mono中的dll?
发布评论