0

我正在使用rVDACQ_Connect返回结构的函数从 C# 到 C++ 的回调,我知道我有正确格式的结构,因为我已经单独测试了结构。函数接受参数:C++

tVDACQ_CallBackRec* (_stdcall* rVDACQ_Connect)(int, tVDACQ_CallBackProc, void*, short*, int);

作为tVDACQ_CallBackRec返回的结构。

我想知道的是 C# 中的等效参数类型。

tVDACQ_CallBackRec VDACQ_Connect(int i, [MarshalAs(UnmanagedType.FunctionPtr)] tVDACQ_CallBackProc proc, IntPtr n, IntPtr[] buffer, int j)

是我已经拥有的。我尝试使用 IntPtr 作为使用该函数的 C++ 部分,该函数使用参数的关键字thisvoid*并使用IntPtr返回错误,即“方法的类型不是 PInvoke 兼容”。

部分问题也可能是short*当参数被传递到使用 C++ 代码中的函数时,ashort[]被使用,因此IntPtr[].

我希望结构会被返回,但我也可以将返回类型更改为IntPtr然后 do Marshal.PtrToStructure

4

0 回答 0