Это на самом деле довольно легко. Просто используйте NuGet, чтобы добавить пакет «UnmanagedExports» в ваш .Net проект. Подробнее см. https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports.
Затем вы можете экспортировать напрямую, без необходимости создания слоя COM. Вот пример кода C #:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using RGiesecke.DllExport;
class Test
{
[DllExport("add", CallingConvention = CallingConvention.Cdecl)]
public static int TestExport(int left, int right)
{
return left + right;
}
}
R должен иметь возможность загружать TextExport точно так же, как обычные Cll.