Tengo una biblioteca nativa con algunos nativos ntype
y me gustaría invocar algunas funciones en ella.PInvoke: cómo obtener el 'SomeType * []'?
que fue capaz de reunir para:
foo1(ntype** p) ==> foo1(IntPtr[] p)
pero no saben cómo hacerlo para:
foo1(ntype*[] p) ==> foo1(<???> p)
Al menos IntPtr[]
no funcionó.
Editar
La función no administrado que estoy tratando de reunir con es:
extern mxArray* mclCreateSimpleFunctionHandle(mxFunctionPtr fcn);
donde mxFunctionPtr
es:
typedef void(*mxFunctionPtr)(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
Esto representa una llamada a la siguiente función de Matlab firma:
function [varargout] = callback(varargins)
%[
%% Do callback code %%
%]
Obviamente, de mis expectativas, este puntero de función debe proporcionarme 2 listas de mxArray*
:
- La lista de argumentos de entrada (es decir, PRHS, inicializado por parte de Matlab)
- La lista de argumentos de salida (es decir, PLHS, todo inicializado a cero, pero en el que yo debería escribir en)
Actualmente partir de las pruebas que he hecho, sólo se devuelve para primicias mxArray*
en plhs
prhs
y listas
funciones C que toman punteros y las matrices son irremediablemente ambiguas. No hay diferencia entre ntype ** y ntype * [] a menos que de alguna manera le haya dado una semántica diferente en su código. –