Есть некая dll и в ней нужная функция.
Функция принимает некий одномерный массив A типа double и размерностью N.
var A = new double[N];
А возвращает другой массив B и той размерности, которой сочтет нужным. Т.е. заранее выделять память под массив B я не могу.
double[] B;
- и больше ничего мне не известно!
Вопрос, как в функцию передать ссылку на массив B и после выполнения получить в C# полноценный массив?
[SuppressUnmanagedCodeSecurity]
internal static class MyFunkNative
{
[DllImport("MyDll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, SetLastError = false)]
internal static extern int MyFunk(
[In] double[] A
, [Out] double[] B
);
}
Как использовать это не понятно. Если я пишу так:
var ret = MyFunkNative.MyFunk(A, B);
то студия говорит, что В перед использованием должно быть инициализировано. Как то надо через ссылки сделать. Но вот как?