[IronPython] how to convert C# MarshalAs code to IronPython
jdhardy at gmail.com
Mon Jun 7 17:02:09 CEST 2010
On Sun, Jun 6, 2010 at 8:20 PM, Ashley Abraham <abrahams84 at gmail.com> wrote:
> I think I miss read your reply, what you are saying is that if it based
> on ctypes it will work in IronPython as well is it?? I thought you needed
> IronClad and so on make it work.
Yeah, with ctypes IronPython can call native code directly - it
actually uses P/Invoke behind the scenes to do it. Python also
implements ctypes, as do Jython and PyPy, so any code that you write
using ctypes should work on any Python implementation.
I haven't tested this (seeing as I don't have the exact DLL) but it
should be pretty close:
from ctypes import *
vniwave = CDLL('vniwave.dll')
cwavec = vniwave.cwavec
cwavec.restype = c_int
cwavec.argtypes = [c_int, c_int, POINTER(c_char_p)]
The only part I'm not sure about is the string - I'm assuming the C
function takes a char**.
Alternatively, you could write the P/Invoke declarations in a C# class
library and load that into IronPython using clr.AddReference, but I'd
recommend using ctypes.
More information about the Ironpython-users