mirror of
https://github.com/nomic-ai/gpt4all
synced 2024-11-06 09:20:33 +00:00
797891c995
* Initial Library Loader * Load library as part of Model factory * Dynamically search and find the dlls * Update tests to use locally built runtimes * Fix dylib loading, add macos runtime support for sample/tests * Bypass automatic loading by default. * Only set CMAKE_OSX_ARCHITECTURES if not already set, allow cross-compile * Switch Loading again * Update build scripts for mac/linux * Update bindings to support newest breaking changes * Fix build * Use llmodel for Windows * Actually, it does need to be libllmodel * Name * Remove TFMs, bypass loading by default * Fix script * Delete mac script --------- Co-authored-by: Tim Miller <innerlogic4321@ghmail.com>
29 lines
925 B
C#
29 lines
925 B
C#
using System.Runtime.InteropServices;
|
|
|
|
namespace Gpt4All.LibraryLoader;
|
|
|
|
internal class MacOsLibraryLoader : ILibraryLoader
|
|
{
|
|
#pragma warning disable CA2101
|
|
[DllImport("libdl.dylib", ExactSpelling = true, CharSet = CharSet.Auto, EntryPoint = "dlopen")]
|
|
#pragma warning restore CA2101
|
|
public static extern IntPtr NativeOpenLibraryLibdl(string? filename, int flags);
|
|
|
|
[DllImport("libdl.dylib", ExactSpelling = true, CharSet = CharSet.Auto, EntryPoint = "dlerror")]
|
|
public static extern IntPtr GetLoadError();
|
|
|
|
public LoadResult OpenLibrary(string? fileName)
|
|
{
|
|
var loadedLib = NativeOpenLibraryLibdl(fileName, 0x00001);
|
|
|
|
if (loadedLib == IntPtr.Zero)
|
|
{
|
|
var errorMessage = Marshal.PtrToStringAnsi(GetLoadError()) ?? "Unknown error";
|
|
|
|
return LoadResult.Failure(errorMessage);
|
|
}
|
|
|
|
return LoadResult.Success;
|
|
}
|
|
}
|