【发布时间】:2023-04-04 21:41:01
【问题描述】:
我正在查看使用 C 编写的库的 C# 程序的源代码。我遇到了这一行,但不确定它是什么:
cvbimUNSAFE.GetImageVPA ((cvbim.IMG)cvImg.Image, 0, (void**)&lpImageBits, &pVPAT);
void ** 类型的对象是什么?我做了一些谷歌搜索,只能找到有关void* 的信息,如果我理解正确的话,它是一种指向所有顶级类型的指针。
【问题讨论】:
-
我知道这有点晚了,但作为旁注:将参数声明为
void**也相当于通过引用传递void*或作为输出参数 (@987654326 @) 这实际上是函数GetImageVPA所做的(我碰巧知道这个库......)。所以在GetImageVPA的 DllImport 语句中,最安全的写法是out IntPtr或out void*(后者需要unsafe规范)。