Может кто-нибудь найти эквивалентный код C # - PullRequest
0 голосов
/ 29 октября 2009

Это код C ++ CreateImageSnapshot, (int, eImageFormat, BYTE**) в VC ++, который мы реализуем BYTE**

PlayerLib::CreateImageSnapshot (iPlayerRef,static_cast<eImageFormat>(lFormat),
        &pBuffer);

здесь мне нужно импортировать DLL и сделать тот же процесс в C #. Может кто-нибудь найти эквивалентный код C #, как

[DllImport("PlayerLib", SetLastError = false, 
                   EntryPoint = "CreateImageSnapshot")]
public static extern int CreateImageSnapshot(...);

Здесь мне нужно выйти из функции CreateImageSnapshot, и я хочу знать, как передать аргумент

заранее спасибо

1 Ответ

1 голос
/ 29 октября 2009

Как я уже говорил в предыдущем вопросе, определение будет:


[DllImport("PlayerLib", SetLastError = false, EntryPoint = "CreateImageSnapshot")]
public static extern int CreateImageSnapshot(int player, eImageFormat imgFormat,
                                             ref IntPtr imgBuffer);


byte[] img;
IntPtr imgBuff = new IntPtr();

int res = CreateImageSnapshot(1, eImageFormat.jpeg, ref imgBuff);
int size = ????
if (res > 0)
{
  img = new byte[size];
  Marshal.Copy(imgBuff, img, 0, size);
}

но ваша неуправляемая функция не возвращает размер буфера. вам нужно добавить еще один параметр в ваш func или вернуть массив в res.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...