PInvoke - Как выполнить маршалинг для SomeType * []?

У меня есть собственная библиотека с некоторыми встроенными ntype в нем и хотел бы вызвать в нем некоторые функции.

Мне удалось выполнить маршалинг для:

foo1(ntype** p) ==> foo1(IntPtr[] p)

Но не знаю, как это сделать для:

foo1(ntype*[] p) ==> foo1(<???> p)

По крайней мере IntPtr [] не работал.

Правка

Неуправляемая функция, которую я пытаюсь использовать, выглядит так:

extern mxArray* mclCreateSimpleFunctionHandle(mxFunctionPtr fcn);

где mxFunctionPtr равно:

typedef void(*mxFunctionPtr)(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);

Это представляет собой вызов следующей сигнатуры функции matlab:

function [varargout] = callback(varargins)
%[
    %% Do callback code %%
%]

Очевидно , по моим ожиданиям, этот указатель на функцию должен предоставить мне 2 списка mxArray * :

  • Список входных аргументов (т.е. prhs, инициализированных на стороне Matlab)
  • Список выходных аргументов ( т.е. plhs, все инициализированы до нуля, но в которые я должен записать)

В настоящее время из проведенных мною тестов он возвращается только для первых mxArray * в plhs и prhs lists

5
задан CitizenInsane 5 January 2012 в 18:35
поделиться