Mam natywną bibliotekę z pewnym rodzimym ntype
w nim i chciałbym p/wywołać niektóre funkcje w nim.PInvoke - Jak uzyskać odpowiedź "SomeType * []"?
udało mi się zebrać dla:
foo1(ntype** p) ==> foo1(IntPtr[] p)
Ale nie wiem, jak to zrobić dla:
foo1(ntype*[] p) ==> foo1(<???> p)
Przynajmniej IntPtr[]
nie pracował.
Edit
niezarządzanego funkcja Próbuję zebrać ze jest:
extern mxArray* mclCreateSimpleFunctionHandle(mxFunctionPtr fcn);
gdzie mxFunctionPtr
jest:
typedef void(*mxFunctionPtr)(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
to stanowić wezwanie do następujących funkcji MATLAB podpis:
function [varargout] = callback(varargins)
%[
%% Do callback code %%
%]
Oczywiście, z moimi oczekiwaniami, ta funkcja wskaźnik powinien zapewnić mi z 2 list mxArray*
:
- Lista argumentów wejściowych (tj prhs, zainicjowana na stronie Matlaba)
- Lista argumentów wyjściowych (tj plhs wszystkie inicjowany do zera, ale w którym powinienem napisać do)
Obecnie z testów zrobiłem, zwraca tylko dla firsts mxArray*
w plhs
i prhs
list
funkcji C, które mają wskaźniki a tablice są beznadziejnie niejednoznaczne. Nie ma różnicy między ntype ** i ntype * [], chyba że w jakiś sposób nadałeś mu inną semantykę w kodzie. –