🖥️How to use

How do I use this library?

This library contains a class that manages how to load the libraries according to both the operating system and the architecture specification using different paths, called LibraryManager. This allows you to load native libraries by copying the native library file or stream to a file in the application executable directory.

You just need to get a byte stream for either your file or a resource found inside your application using one of the available methods, such as Assembly.GetManifestResourceStream() + Stream.CopyTo() for embedded resource streams or File.ReadAllBytes() for file streams. This is an example of how to create a new instance of the library manager:

var libManager = new LibraryManager(
    _factory,
    new LibraryItem(Platform.MacOS, Architecture.X64,
        new LibraryFile("libTestLib.dylib", accessor.Binary("libTestLib.dylib"))),
    new LibraryItem(Platform.Windows, Architecture.X64,
        new LibraryFile("TestLib.dll", accessor.Binary("TestLib.dll"))),
    new LibraryItem(Platform.Linux, Architecture.X64,
        new LibraryFile("libTestLib.so", accessor.Binary("libTestLib.so"))),
    new LibraryItem(Platform.Linux, Architecture.Arm64,
        new LibraryFile("libTestLib.so", accessor.Binary("libTestLib_Arm64.so"))));

Once you're done creating new instances of library manager classes, you can now load all of them when needed, as in LoadNativeLibrary(). To verify that it's truly loaded, place a P/Invoke of one or more of the library's functions and call it somewhere after initialization.

Last updated