I've got a C# extern declaration that goes like this:
[DllImport("something.dll")]
public static extern ReturnCode GetParent(IntPtr inRef, out IntPtr outParentRef);
How to translate that to F#?
I've got a C# extern declaration that goes like this:
[DllImport("something.dll")]
public static extern ReturnCode GetParent(IntPtr inRef, out IntPtr outParentRef);
How to translate that to F#?
You can try something like the code below. I don't know what
ReturnCode
is, so the code below expects it is an integer. For any more complex type, you'll need to use[<Struct>]
attribute as in the answer referenced by A-Dubb.To call the function, you'd write something like this:
BTW: Could you also post a sample C code that implements the function in
something.dll
? If yes, we could try running the solution before sending an answer...Maybe this similar question will point you in the right direction. Looks like he used attributes at the parameter level for "in" and "out" F# syntax for P/Invoke signature using MarshalAs
For anyone else trying to use F# with EnvDte via PInvoke this may help:
which apparently is slightly incorrect, but appears to work. the definition should be: