mirror of
				https://github.com/nomic-ai/gpt4all.git
				synced 2025-11-04 07:55:24 +00:00 
			
		
		
		
	* 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;
 | 
						|
    }
 | 
						|
}
 |