Я просматриваю исходный код программы C #, которая использует библиотеку, написанную на C. Я наткнулся на эту строку и не был уверен, что это было:
cvbimUNSAFE.GetImageVPA ((cvbim.IMG)cvImg.Image, 0, (void**)&lpImageBits, &pVPAT);
Что такое объект типа void **
? Я провел несколько поисков в Google и смог найти информацию только о void*
, который, если я правильно понял, является указателем на своего рода отлов всех типов верхнего уровня.
void**
также является эквивалентом C передачиvoid*
по ссылке или как выходной параметр (void*&
), и это фактически то, что делает функцияGetImageVPA
(я случайно знать библиотеку ...). Таким образом, в операторе DllImport дляGetImageVPA
безопаснее всего писатьout IntPtr
илиout void*
(последнее требует спецификацииunsafe
). - person StuporMundi   schedule 07.06.2017