相关疑难解决方法(0)

PInvoke - 如何编组'SomeType*[]'?

我有一个本地库,其中包含一些本机ntype,并希望在其中调用一些函数.

我能够为:

foo1(ntype** p) ==> foo1(IntPtr[] p)
Run Code Online (Sandbox Code Playgroud)

但不知道如何做到:

foo1(ntype*[] p) ==> foo1(<???> p)
Run Code Online (Sandbox Code Playgroud)

至少IntPtr[]没有奏效.

编辑

我试图编组的非托管函数是:

extern mxArray* mclCreateSimpleFunctionHandle(mxFunctionPtr fcn);
Run Code Online (Sandbox Code Playgroud)

在哪里mxFunctionPtr:

typedef void(*mxFunctionPtr)(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
Run Code Online (Sandbox Code Playgroud)

这表示调用以下matlab函数签名:

function [varargout] = callback(varargins)
%[
    %% Do callback code %%
%]
Run Code Online (Sandbox Code Playgroud)

显然,从我的期望来看,这个函数指针应该为我提供了2个列表mxArray*:

  • 输入参数列表(即prhs,在matlab端初始化)
  • 输出参数列表(即plhs,全部初始化为零,但我应该写入)

目前,从我所做的测试中,它只返回首创mxArray*plhsprhs

c# pinvoke

5
推荐指数
1
解决办法
1245
查看次数

标签 统计

c# ×1

pinvoke ×1