2023-01-18 13:00:00
Silly
This is part of a series on Native AOT.
Previous -- Top -- Next
Native AOT produces libraries that can be called from any language that can call C.
C# is one such language.
Yes folks, that's right -- even though it is [probably] not useful, you can call into a Native AOT library from C# using P/Invoke:
using System;
using System.Runtime.InteropServices;
static class MulCsPinvoke
{
[DllImport("mul")]
static extern int multiply(int a, int b);
public static void Main()
{
var c = multiply(7, 6);
Console.WriteLine($"{c}");
}
}
After we copy mul.dll into place, we can run it:
$ cp ../mul_cs/bin/Debug/net7.0/win-x64/publish/mul.dll . $ dotnet run 42
The code for this blog entry is available at:
https://github.com/ericsink/native-aot-samples/tree/main/mul_cs_pinvoke