What platform is this on, macOS?
Dll resolving on macOS is tricky/difficult and using a very strange system, where the libraries (.dylibs, equivalent of a Windows .dll) specify the (relative or absolute) path where the exe should look for the dll. the @rpath is that. This mikeash.com: Friday Q&A 2009-11-06: Linking and Install Names is a fun read on the topic.
It sound like somehow the native libSkiaSharp.framework
is not being deployed as it should or the exe is not setting the right rpaths.
I will have a look at the projects. Could you send me (if it’s not included in the zips already, I haven’t downloaded yet) the output of the VC# project, so I can compare (as I’m traveling thisweek, and not set up right now to build that one locally).
thanx,
marc
Update this is odd. the skiasharp.nativeassets.macos
package has libSkiaSharp.dylib
, which is being deployed correctly for me (im testing on Mac only, right now). But I do repro that its its not being loaded; apparently it is checkin these 6 paths, all of which expect the dylib to be inside a “libSkiaSharp.framework” — which does not exist.
dlopen(/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0-preview.2.23128.3/@rpath/libSkiaSharp.framework/libSkiaSharp.dylib, 0x0001): tried: '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0-preview.2.23128.3/@rpath/libSkiaSharp.framework/libSkiaSharp.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0-preview.2.23128.3/@rpath/libSkiaSharp.framework/libSkiaSharp.dylib' (no such file), '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0-preview.2.23128.3/@rpath/libSkiaSharp.framework/libSkiaSharp.dylib' (no such file)
dlopen(/Users/mh/Downloads/SkiaSharp_oxygene/Bin/Debug/@rpath/libSkiaSharp.framework/libSkiaSharp.dylib, 0x0001): tried: '/Users/mh/Downloads/SkiaSharp_oxygene/Bin/Debug/@rpath/libSkiaSharp.framework/libSkiaSharp.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/mh/Downloads/SkiaSharp_oxygene/Bin/Debug/@rpath/libSkiaSharp.framework/libSkiaSharp.dylib' (no such file), '/Users/mh/Downloads/SkiaSharp_oxygene/Bin/Debug/@rpath/libSkiaSharp.framework/libSkiaSharp.dylib' (no such file)
dlopen(@rpath/libSkiaSharp.framework/libSkiaSharp.dylib, 0x0001):
dlopen(/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0-preview.2.23128.3/@rpath/libSkiaSharp.framework/libSkiaSharp, 0x0001): tried: '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0-preview.2.23128.3/@rpath/libSkiaSharp.framework/libSkiaSharp' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0-preview.2.23128.3/@rpath/libSkiaSharp.framework/libSkiaSharp' (no such file), '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0-preview.2.23128.3/@rpath/libSkiaSharp.framework/libSkiaSharp' (no such file), '/Library/Frameworks/libSkiaSharp.framework/libSkiaSharp' (no such file), '/System/Library/Frameworks/libSkiaSharp.framework/libSkiaSharp' (no such file, not in dyld cache)
dlopen(/Users/mh/Downloads/SkiaSharp_oxygene/Bin/Debug/@rpath/libSkiaSharp.framework/libSkiaSharp, 0x0001): tried: '/Users/mh/Downloads/SkiaSharp_oxygene/Bin/Debug/@rpath/libSkiaSharp.framework/libSkiaSharp' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/mh/Downloads/SkiaSharp_oxygene/Bin/Debug/@rpath/libSkiaSharp.framework/libSkiaSharp' (no such file), '/Users/mh/Downloads/SkiaSharp_oxygene/Bin/Debug/@rpath/libSkiaSharp.framework/libSkiaSharp' (no such file), '/Library/Frameworks/libSkiaSharp.framework/libSkiaSharp' (no such file), '/System/Library/Frameworks/libSkiaSharp.framework/libSkiaSharp' (no such file, not in dyld cache)
dlopen(@rpath/libSkiaSharp.framework/libSkiaSharp, 0x0001): tried: '/Library/Frameworks/libSkiaSharp.framework/libSkiaSharp' (no such file), '/System/Library/Frameworks/libSkiaSharp.framework/libSkiaSharp' (no such file, not in dyld cache)
without seeing what C# generates, right now just from looking at the Oxygene project and the input packages, I would say this is “expected”, this dll depends on a .framework it doesn’t ship. :(.