Watch
3
0
Fork
You've already forked raylib-cs
0

Improve custom dll import error handling

* Use NativeLibrary.Load instead of NativeLibrary.TryLoad
* Add error details to the DllNotFoundException
This commit is contained in:
Chris 2026-09-03 19:01:21 +01:00
commit d32feb765a

View file

@ -26,21 +26,31 @@ public static unsafe partial class Raylib
public static IntPtr ResolveDllImport(string libraryName, Assembly assembly, DllImportSearchPath? searchPath) public static IntPtr ResolveDllImport(string libraryName, Assembly assembly, DllImportSearchPath? searchPath)
{ {
IntPtr handle = IntPtr.Zero; string resolveNameError;
string libraryPath = GetLibraryPath(libraryName); try
if (NativeLibrary.TryLoad(libraryName, assembly, searchPath, out handle))
{ {
IntPtr handle = NativeLibrary.Load(libraryName, assembly, searchPath);
return handle; return handle;
} }
catch (Exception ex)
if (NativeLibrary.TryLoad(libraryPath, out handle))
{ {
resolveNameError = ex.Message;
}
string resolvePathError;
string libraryPath = GetLibraryPath(libraryName);
try
{
IntPtr handle = NativeLibrary.Load(libraryPath);
return handle; return handle;
} }
catch (Exception ex)
{
resolvePathError = ex.Message;
}
throw new DllNotFoundException( throw new DllNotFoundException(
$"Failed to load {libraryName}." string.Join("\n", string.Empty, resolveNameError, resolvePathError)
); );
} }