我尝试创建一个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 }
复制步骤:
我试图解压缩我的dll和libSkiaSharp.framework,它是作为一个资源嵌入的,就像在SkiaSharp.dll中一样。任何帮助都是感激的,我被困在这里。顺便说一句,完全相同的方法在Xamarin.Android中运行得很好。
发布于 2017-07-30 07:58:35
我终于成功了。解决方案与以往一样很简单:)。要使其工作,需要将以下属性添加到主类库项目的AssemblyInfo.cs中:
[assembly: ObjCRuntime.LinkWith("libSkiaSharp.framework", SmartLink = true)]希望这对其他人有帮助。
https://stackoverflow.com/questions/45275372
复制相似问题