c# - 在 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# 开发人员。
解决方案
这不是一回事。SkiaSharp 有一些其他位添加到核心skia。您将得到的输出是一个skia.dll,它只是一部分。不知道你是如何libSkiaSharp
从skia
目标中得到一个...
如果您不能使用 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 工作来使用它,所有工作都会为您完成。
推荐阅读
- c# - 如何测试字节数组中的像素是否为白色?
- android - androidx 工作管理器问题 - “java.lang.IllegalStateException:无法解析结果路径字符串:”
- android - 如何在 appium 测试框架中使用 XPath 访问和单击反应原生元素?
- reactjs - setState 只更新一些值
- java - 接口上的显式类与泛型
- javascript - 异步调用后 React Context API 不更新状态
- r - 在每个组的变量上映射摘要
- angular - 是否可以仅重定向未找到路由的查询参数?
- embedded-linux - 尝试为 imx6ul 板移植 android 映像时出现内核恐慌
- r - mutate_ 中的 NSE 与 SE