How to pass an array of doubles from managed to unmanaged code.

So I was working with someone on getting this to work and there aren't ANY samples anywere that I could find using what you would expect to use for searching (PInvoke, “array of doubles”, etc.).  I figured I'd post this up here so it would get indexed and people could benefit from it.  Thanks to AnantD for helping out!

 

 

// C# PInvoke Declaration

[DllImport("structTest.dll", EntryPoint="dblArray")]

public static unsafe extern double dblArray ( double [] s, long len);

' VB.NET PInvoke declaration

Public Declare Auto Function dblArray Lib "structtest.dll" (<[In](), Out()> ByVal d1() As Double, ByVal l As Long) As double

// Unmanaged Function

double dblArray(double x[], long n)

{

for (int i = 0; i < n; i++)

x[i] = i * 2.1;

return 0;

}