首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DllNotFoundException在ILMerge SkiaSharp之后抛出到ILMerge Xamarin.iOS dll中。

DllNotFoundException在ILMerge SkiaSharp之后抛出到ILMerge Xamarin.iOS dll中。
EN

Stack Overflow用户
提问于 2017-07-24 08:12:54
回答 1查看 520关注 0票数 1

我尝试创建一个Xamarin.iOS类库,它在内部使用SkiaSharp。我想将最终类库作为一个没有外部依赖关系的单个dll分发。为此,我使用ILMerge (或ILRepack)。最终dll已成功创建,但当我试图从类库调用某个方法时,我将得到DllNotFoundException。下面是堆栈跟踪:

{System.DllNotFoundException:@rpath/libSkiaSharp.framework/libSkiaSharp at (包装托管到本机) SkiaSharp.SkiaApi:sk_filestream_new (string) at SkiaSharp.SKFileStream..ctor (System.String path) 0x00000 in <9d222c42d8aa4f729033b25ddebc012a>:0 at SkiaSharp.SKBitmap.Decode (System.String filename) 0x00011 in <9d222c42d8aa4f729033b25ddebc012a>:0 at TestMerge.TestClass.TestMethod (System.String imageFile) 0x00001 in <9d222c42d8aa4f729033b25ddebc012a>:0 at Tests.Xamarin.Tests.Test001 () 0x00002 in /Users/mac1 1/Projects/awxamarin/Xamarin.Tests/Tests.Xamarin/Tests.cs:19 }

复制步骤:

  1. 创建一个简单的Xamarin.iOS类库。
  2. 添加对SkiaSharp的引用
  3. 使用使用SkiaSharp的方法创建一些简单的公共类。例如 命名空间TestMerge {公共类TestClass {公共静态空TestMethod(string imageFile) { bmp = SkiaSharp.SKBitmap.Decode(imageFile);}}
  4. 构建项目并使用ILMerge (如果您更喜欢的话可以使用ILRepack )合并dll。下面是用于合并dll的命令: "C:\Program (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.iOS\v1.0“/out:C:\Temp\TestMerge.dll C:\Temp\TestMerge\TestMerge\bin\Debug\TestMerge.dll C:\Temp\TestMerge\TestMerge\bin\Debug\SkiaSharp.dll”
  5. 创建Xamarin.iOS应用程序(我使用UnitTest应用程序进行测试)添加对创建的dll的引用,调用方法TestMethod。结果,出现了System.DllNotFoundException:@rpath/libSkiaSharp.framework/libSkiaSharp。

我试图解压缩我的dll和libSkiaSharp.framework,它是作为一个资源嵌入的,就像在SkiaSharp.dll中一样。任何帮助都是感激的,我被困在这里。顺便说一句,完全相同的方法在Xamarin.Android中运行得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-30 07:58:35

我终于成功了。解决方案与以往一样很简单:)。要使其工作,需要将以下属性添加到主类库项目的AssemblyInfo.cs中:

代码语言:javascript
复制
[assembly: ObjCRuntime.LinkWith("libSkiaSharp.framework", SmartLink = true)]

希望这对其他人有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45275372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档