Skip to content

EgorBo/CppPinvokeGenerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CppPinvokeGenerator

A simple pinvoke generator based on xoofx/CppAst to generate C# for C/C++

Let's say we have a C++ class:

class Calculator {
public:
     int add(int x, int y);
}

Since it's a class and add is an instance method, we need to make it DllImport-friendly:

EXPORTS(Calculator*) Calculator_Calculator() { return new Calculator(); }
EXPORTS(int) Calculator_add(Calculator* target, int x, int y);

Now we can easily bind it to C#:

public partial class Calculator : SafeHandle
{
    public IntPtr Handle { get; private set; }
    
    // API:
    public Calculator() => this.Handle = Calculator_Calculator();
    public int Add(int x, int y) => Calculator_add(Handle, x, y);
    
    // DllImports
    [DllImport("mylib")] private static extern int Calculator_add(IntPtr handle, int x, int y);
    [DllImport("mylib")] private static extern IntPtr Calculator_Calculator();
}

So the generator is able to generate C# classes and the C glue. As an example - see samples/SimdJson.

Nuget

dotnet add package CppPinvokeGenerator

About

A simple pinvoke generator based on CppAst to generate C# for C++

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages