[Mono-list] Help in dealing with Mono/.NET PInvoke issue

Dinis Cruz dinis.cruz at googlemail.com
Fri Jan 8 17:48:47 EST 2010


Any recomendations for a host GUI API?

Is the one used in MonoDevelop easy to reuse?

Dinis Cruz

On 8 Jan 2010, at 21:36, Miguel de Icaza <miguel at novell.com> wrote:

> Hello,
>
>> I've just checked-in the code that contains this project, so now all
>> relevant source code is on the O2Platform sourcecode
>
> You will likely need to find an alternative to this widget (the
> DockPanel) as the code has some 24 P/Invokes, and chances are that the
> code depends on those calls to provide the functionality.
>
>
>>
>>
>> Here is the list of the PInvokes that (I think) are causing the
>> problem
>>      * Win32 Native
>>        methods: http://code.google.com/p/o2platform/source/browse/trunk/SourceCode_3rdParty_Dlls/DockPanel/WinFormsUI/Docking/Win32/NativeMethods.cs
>>      * Win32
>>        Enums: http://code.google.com/p/o2platform/source/browse/trunk/SourceCode_3rdParty_Dlls/DockPanel/WinFormsUI/Docking/Win32/Enums.cs
>> To easily replicate this, please use this project
>> http://code.google.com/p/o2platform/source/browse/trunk/O2%20-%20All%
>> 20Active%20Projects/O2Core/O2/O2.sln since it only loads up that GUI
>> and when executed (OSx 10.6) throws this error message:
>>
>>
>> Unhandled Exception: System.DllNotFoundException: user32.dll
>>  at (wrapper managed-to-native)
>> WeifenLuo.WinFormsUI.Docking.NativeMethods:SetWindowsHookEx
>> (WeifenLuo.WinFormsUI.Docking.Win32.
>> HookType,WeifenLuo.WinFormsUI.Docking.NativeMethods/ 
>> HookProc,intptr,int)
>>  at WeifenLuo.WinFormsUI.Docking.DockPanel+FocusManagerImpl
>> +LocalWindowsHook.Install () [0x00021]
>> in /Users/.../Projects/SourceCode_3rdParty_Dlls/DockPanel/ 
>> WinFormsUI/Docking/DockPanel.FocusManager.cs:91
>>  at WeifenLuo.WinFormsUI.Docking.DockPanel+FocusManagerImpl..ctor
>> (WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel) [0x00087]
>> in /Users/.../Projects/SourceCode_3rdParty_Dlls/DockPanel/ 
>> WinFormsUI/Docking/DockPanel.FocusManager.cs:130
>>  at (wrapper remoting-invoke-with-check)
>> WeifenLuo.WinFormsUI.Docking.DockPanel/FocusManagerImpl:.ctor
>> (WeifenLuo.WinFormsUI.Docking.DockPanel)
>>  at WeifenLuo.WinFormsUI.Docking.DockPanel..ctor () [0x000c8]
>> in /Users/.../Projects/SourceCode_3rdParty_Dlls/DockPanel/ 
>> WinFormsUI/Docking/DockPanel.cs:44
>>  at (wrapper remoting-invoke-with-check)
>> WeifenLuo.WinFormsUI.Docking.DockPanel:.ctor ()
>>  at
>> O2.External.WinFormsUI.Forms.O2GuiWithDockPanel.InitializeComponent  
>> ()
>> [0x00000] in /Users/.../Projects/O2 - All Active Projects/O2 Modules
>> Using 3rd Party
>> Dlls/O2_External_WinFormsUI/Forms/O2GuiWithDockPanel.Designer.cs:32
>>  at O2.External.WinFormsUI.Forms.O2GuiWithDockPanel..ctor ()
>> [0x0000d] in /Users/.../Projects/O2 - All Active Projects/O2 Modules
>> Using 3rd Party
>> Dlls/O2_External_WinFormsUI/Forms/O2GuiWithDockPanel.cs:24
>>  at (wrapper remoting-invoke-with-check)
>> O2.External.WinFormsUI.Forms.O2GuiWithDockPanel:.ctor ()
>>  at
>> O2. 
>> External.WinFormsUI.O2Environment.O2DockPanel.getO2GuiWithDockPanel
>> () [0x0000a] in /Users/.../Projects/O2 - All Active Projects/O2
>> Modules Using 3rd Party
>> Dlls/O2_External_WinFormsUI/O2Environment/O2DockPanel.cs:87
>>  at
>> O2. 
>> External.WinFormsUI.O2Environment.O2DockPanel.addControlToO2GuiWithDockPanelSync  
>> (O2.External.WinFormsUI.O2Environment.O2DockContent controlToAdd)  
>> [0x00020] in /Users/.../Projects/O2 - All Active Projects/O2  
>> Modules Using 3rd Party Dlls/O2_External_WinFormsUI/O2Environment/ 
>> O2DockPanel.cs:99
>>  at
>> O2. 
>> External.WinFormsUI.O2Environment.O2DockPanel.addControlsToFormAndStartIt  
>> (IEnumerable`1 controlsToAdd) [0x00013] in /Users/.../Projects/O2 -  
>> All Active Projects/O2 Modules Using 3rd Party Dlls/ 
>> O2_External_WinFormsUI/O2Environment/O2DockPanel.cs:159
>>  at
>> O2. 
>> External.WinFormsUI.O2Environment.O2DockPanel.openO2DockContentInNewDockPanel  
>> (System.Collections.Generic.List`1 controlsToLoad) [0x00010] in / 
>> Users/.../Projects/O2 - All Active Projects/O2 Modules Using 3rd  
>> Party Dlls/O2_External_WinFormsUI/O2Environment/O2DockPanel.cs:76
>>  at O2.External.WinFormsUI.O2Environment.O2DockPanel..ctor ()
>> [0x00006] in /Users/.../Projects/O2 - All Active Projects/O2 Modules
>> Using 3rd Party
>> Dlls/O2_External_WinFormsUI/O2Environment/O2DockPanel.cs:20
>>  at O2.External.WinFormsUI.Forms.O2AscxGUI.<launch>m__8 () [0x00000]
>> in /Users/.../Projects/O2 - All Active Projects/O2 Modules Using 3rd
>> Party Dlls/O2_External_WinFormsUI/Forms/O2AscxGUI.cs:43
>>  at O2.DotNetWrappers.DotNet.O2Thread
>> +<staThread>c__AnonStorey9.<>m__B () [0x00000]
>> in /Users/.../Projects/O2 - All Active
>> Projects/O2Core/O2_DotNetWrappers/DotNet/O2Thread.cs:34
>> The application was terminated by a signal: SIGHUP
>>
>>
>>
>>
>> Thanks
>>
>>
>> Dinis Cruz
>>
>> 2010/1/4 Chris Howie <cdhowie at gmail.com>
>>> I just wrote a blog post about the problem I currently have
>>>
>>        (see http://diniscruz.blogspot.com/2010/01/o2-on-mono-monodevelop-and-osx.html 
>> ),
>>> which seems to be a variation of one you have seen several
>>        times in the
>>> past: "Unhandled Exception: System.DllNotFoundException:
>>        user32.dll"
>>
>>
>>        This means that your platform is invoking one of Windows'
>>        native
>>        libraries.  You need to figure out how to perform the
>>        equivalent call
>>        on Linux or OS X.  Note that there may be a framework method
>>        for what
>>        you are trying to do, and you should use it if that is the
>>        case.
>>
>>        Without knowing which P/Invoke call you are making it's not
>>        possible
>>        to tell if this is fixable.
>>
>>        --
>>        Chris Howie
>>        http://www.chrishowie.com
>>        http://en.wikipedia.org/wiki/User:Crazycomputers
>>
>>
>> _______________________________________________
>> Mono-list maillist  -  Mono-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-list
>


More information about the Mono-list mailing list