我有一個本地庫,其中包含一些原生的ntype
,並且想要在其中調用一些函數。PInvoke - 如何編組''SomeType * []'?
我能元帥:
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,全部初始化爲0,但我應該寫成)
目前,它只返回首創mxArray*
在plhs
和prhs
名單
C函數和數組是無望的含糊不清。 ntype **和ntype * []之間沒有區別,除非您在代碼中以某種方式賦予其不同的語義。 – 2012-01-05 14:33:06