首页 > 解决方案 > 在 DLL“libSkiaSharp”中找不到名为“sk_color_get_bit_shift”的入口点。使用 SkiaSharp 15.9.1 时

问题描述

我正在尝试构建和使用此处提供的 MicoCharts 项目:https ://github.com/dotnet-ad/Microcharts ,它依赖于此处提供的此 SkiaSharp 项目:https ://github.com/mono/SkiaSharp

我尝试使用的特定版本是 15.9.1(nuget 包下载的版本),它使用了skia m59。

我需要自己构建它们并且由于业务限制而无法使用 Nuget,仅使用该软件包对我来说不是一个选项。

我已经构建了skia m59、SkiaSharp 和MicroCharts,但是当我尝试创建一个SKBitmap 对象时,它尝试初始化SkiaSharp.SKImageInfo 时出现错误。错误如下:

在 DLL“libSkiaSharp”中找不到名为“sk_color_get_bit_shift”的入口点。

对于 Windows SDK 和 VC 安装,我必须对基础 BUILD.gn 进行一些更改以指向正确的文件位置。我在 BUILD.gn 中启用了 skia_use_gdi 并运行了以下命令。

python2 tools/git-sync-deps

gn gen out/Release --args="is_debug=false is_official_build=true skia_use_system_expat=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_zlib=false skia_use_icu=false is_component_build=true"

ninja -C out/Release skia

这个过程输出一个我认为与 SkiaSharp 项目所依赖的 libSkiaSharp 相同的 DLL。我添加了所有引用并运行,项目成功运行,直到我尝试创建 SkBitmap 对象然后它失败。

要么这个 DLL 不是正确的 DLL,要么我在这里误解了某些东西,要么我的过程中的某些东西是错误的。我很想得到任何帮助,因为我对构建这类项目完全陌生,我是一名 C# 开发人员。

标签: c#skiasharpskia

解决方案


这不是一回事。SkiaSharp 有一些其他位添加到核心skia。您将得到的输出是一个skia.dll,它只是一部分。不知道你是如何libSkiaSharpskia目标中得到一个...

如果您不能使用 NuGet.org 中的 SkiaSharp(这是受支持的案例),您可以按照以下步骤构建您自己的:https ://github.com/mono/SkiaSharp/wiki/Building-SkiaSharp

您还可以查看 Azure DevOps yaml:https ://github.com/mono/SkiaSharp/blob/master/scripts/azure-pipelines.yml

只需设置您自己的 DevOps 工作来使用它,所有工作都会为您完成。


推荐阅读