c++ 如何从UWP应用程序调用“libheif.dll”函数

jrcvhitl  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(213)

我尝试在我的UWP应用中使用"libheif" library来解码一些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.dllheif.h文件的链接。

ogq8wdun

ogq8wdun1#

1.您必须确定应用程序是作为32位还是64位应用程序运行。
1.然后确保libheif.dll(主)可以链接到位于同一目录libde265.dll(解码器)和libx265.dll(编码器)中的依赖性dll。
1.因此,如果缺少上述任何库,请从https://github.com/mcychan/libheif/releases下载。

相关问题