在ILMerge SkiaSharp到我的Xamarin.iOS dll后引发DllNotFoundException
我尝试创建一个Xamarin.iOS类库,它在内部使用SkiaSharep。我想将最终的类库作为一个没有外部依赖关系的dll分发。为此,我使用ILMerge(或ILRepack)。最终的dll已成功创建,但当我尝试从类库调用某个方法时,我得到了DllNotFoundException。以下是堆栈跟踪: {System.DllNotFoundException: @rpath/libSkiaSharp.framework/libSkiaSharp-at(包装器 管理为本机)SkiaSharp.SkiaApi:sk_filestream_new(字符串)位于 SkiaSharp.SKFileStream..ctor(System.String路径)[0x00000]输入 :0位于SkiaSharp.SKBitmap.Decode 中的(System.String文件名)[0x00011] :0 at 中的TestMerge.TestClass.TestMethod(System.String imageFile)[0x00001] :0在Tests.Xamarin.Tests.Test001处 ()[0x00002]英寸 /Users/mac1/Projects/awxamarin/Xamarin.Tests/Tests.Xamarin/Tests.cs:19 } 复制步骤:在ILMerge SkiaSharp到我的Xamarin.iOS dll后引发DllNotFoundException,xamarin.ios,ilmerge,skiasharp,Xamarin.ios,Ilmerge,Skiasharp,我尝试创建一个Xamarin.iOS类库,它在内部使用SkiaSharep。我想将最终的类库作为一个没有外部依赖关系的dll分发。为此,我使用ILMerge(或ILRepack)。最终的dll已成功创建,但当我尝试从类库调用某个方法时,我得到了DllNotFoundException。以下是堆栈跟踪: {System.DllNotFoundException: @rpath/libSkiaSharp.framework/libSkiaSharp-at(包装器 管理为本机)SkiaSharp.Sk
namespace TestMerge
{
public class TestClass
{
public static void TestMethod(string imageFile)
{
SkiaSharp.SKBitmap bmp = SkiaSharp.SKBitmap.Decode(imageFile);
}
}
}
顺便说一句,完全相同的方法对Xamarin.Android很有效。我终于成功了。解决方案一如既往地简单:)。要使其工作,需要将以下属性添加到主类库项目的AssemblyInfo.cs中:
[程序集:ObjCRuntime.LinkWith(“libSkiaSharp.framework”,SmartLink=true)]
希望这对其他人有用我终于让它工作起来了。解决方案一如既往地简单:)。要使其工作,需要将以下属性添加到主类库项目的AssemblyInfo.cs中:
[程序集:ObjCRuntime.LinkWith(“libSkiaSharp.framework”,SmartLink=true)]
希望这对其他人有用仅链接回Xamarin论坛问题:仅链接回Xamarin论坛问题: