Я пытаюсь использовать библиотеку "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 ..