Я пытаюсь написать оболочку C # для кодировщика Google WebP .
Метод, который я пытаюсь вызвать:
// Returns the size of the compressed data (pointed to by *output), or 0 if
// an error occurred. The compressed data must be released by the caller
// using the call 'free(*output)'.
WEBP_EXTERN(size_t) WebPEncodeRGB(const uint8_t* rgb,
int width, int height, int stride,
float quality_factor, uint8_t** output);
Заимствование из mcОболочка декодера -kay Я получил следующее:
[DllImport("libwebp", CharSet = CharSet.Auto)]
public static extern IntPtr WebPEncodeRGB(IntPtr data, int width, int height, int stride, float quality, ref IntPtr output);
К сожалению, всякий раз, когда я пытаюсь запустить это, я получаю следующую ошибку:
Вызов PInvokeфункция 'WebPSharpLib! LibwebpSharp.Native.WebPEncoder :: WebPEncodeRGB' разбалансировала стек.Это вероятно потому, что управляемая подпись PInvoke не соответствует неуправляемой целевой подписи.Убедитесь, что соглашение о вызовах и параметры подписи PInvoke соответствуют целевой неуправляемой подписи.
Я перепробовал множество вариантов подписи, но безрезультатно.
Кто-нибудь получил подсказку?
Ура, Майк