Как вызвать функцию "libheif.dll" из приложения UWP - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь использовать библиотеку "libheif" в своем приложении UWP для декодирования некоторых изображений HEIC.В heif.h я добавил следующий код C ++ extern "C" __declspec(dllexport) к функциям, которые я хочу вызвать из своего кода C #:

    LIBHEIF_API
    extern "C" __declspec(dllexport) struct heif_context* heif_context_alloc(void);

    LIBHEIF_API
    extern "C" __declspec(dllexport) void heif_context_free(struct heif_context*);

    LIBHEIF_API
    extern "C" __declspec(dllexport) struct heif_error heif_context_read_from_file(struct heif_context*, const char* filename,
                                              const struct heif_reading_options*);

    ...

Затем я скомпилировал библиотеку в файл DLL и добавил ее в свой проект UWP.В коде C # я сделал это:

    namespace Libraries
    {
        public class PInvokeCode
        {
          [DllImport("ms-appx:///libheif.dll")]
          public static extern struct heif_context_alloc();

          [DllImport("ms-appx:///libheif.dll")]
          public static extern void heif_context_free(struct heif_context);

          [DllImport("ms-appx:///libheif.dll")]
          public static extern struct heif_error heif_context_read_from_file(struct heif_context*, const char* filename,
                                              const struct heif_reading_options*);

        }
    }

Конечно, в моем UWP я разрешил небезопасный код, и я установил DLL как контент.все же, однако, я не могу заставить код работать.Я впервые пытаюсь сделать это, и я не знаю точно, где я иду не так!

Если вам это нужно, вот ссылки на libheif.dll и heif.h files ..

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