Home

Awesome

AdvancedDLSupport

Alternative approach to your usual P/Invoke!

Join the chat at https://discord.gg/fDy5Vhb

Use C# interfaces to bind to native code - quick and easy usage of C API in C# code, on any platform. Gone are the days of broken DllImport and annoying workarounds for the different runtimes.

Fully compatible with Mono, .NET Framework, .NET Core, and .NET Standard. Compatible with Mono DLL mapping on all platforms and runtimes. Configurable and adaptible.

Why use ADL?

  1. Modern API - no more static classes, no more extern. Use your native API as if it were first-class objects.
  2. Flexibility - Inject your native API into your classes, change the library scanning logic, mix your managed and native code.
  3. Speed - ADL is blazing fast, and gives your native interop an edge. See performance increases that are at least 2 and up to 8 times faster than other, existing solutions.
  4. Easy to use - Not only is ADL simple to set up and get working, it's a breeze to maintain, and reduces clutter in your codebase.

Read the Docs, or install via NuGet and get started.

Features

Basic Usage

  1. Declare your interface

    public interface IMyNativeLibrary
    {
    	long MyNativeGlobal { get; set; }
    	int MyNativeMultiply(int a, int b);
    	void MyOtherNativeFunction(MyStruct strct, ref MyStruct? maybeStruct);
    }
    
  2. Activate it

    const string MyLibraryName = "MyLibrary";
    
    var activator = new NativeLibraryBuilder();
    var library = activator.ActivateInterface<IMyNativeLibrary>(MyLibraryName);
    
  3. Use it

    library.MyNativeGlobal = 10;
    
    var result = library.MyNativeMultiply(5, 5);
    
    var myStruct = new MyStruct();
    MyStruct? myOtherStruct = null;
    
    library.MyOtherNativeFunction(myStruct, ref myOtherStruct);
    

See the Quickstart for more information.

Installation

Get it on NuGet!

Support me

Become a Patron <a href='https://ko-fi.com/H2H176VD' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>

License

If the library's license doesn't fit your project or product, please contact us. Custom licensing options are available, and we are always open to working something out that fits you - be it modified, commercial, or otherwise.

AdvancedDLSupport's public release is licensed under the GNU Lesser General Public License, Version 3 (LGPLv3). See the LICENSE for details. Without the support of the open-source movement, it would never have existed.