Я смотрю на .NET Core проект, который вызывает динамическую библиотеку, которую я создаю из C ++. Я в основном скопировал пример, обсуждаемый в https://github.com/dotnet/core/issues/756.
// Program.cs
using System;
using System.Runtime.InteropServices;
namespace dotnet_pinvoke
{
class Program
{
[DllImport("extern_lib/a.out")]
public static extern int MyNativeFunction(int x, int y, int z);
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.WriteLine(MyNativeFunction(1, 2, 3));
}
}
}// extern_lib/mylib.c
#include <cstdint>
extern "C" std::int32_t MyNativeFunction(int32_t x, int32_t y, int32_t z)
{
return x + y + z;
}
Я строю с g++ -std=c++14 -shared mylib.c
а также dotnet build
,
Это работает. Я даже приятно удивлен, как быстро это сработало.
Теперь мне интересно, как интегрировать процесс сборки библиотеки C
в dotnet build
,
В идеале, dotnet build
назвал бы make
или же cmake
в
обновить динамическую библиотеку, если были изменения.
Если это невозможно, какова лучшая альтернатива?
Создание выпусков из моего кода C и ссылки на них из C # как-нибудь?
Зависимость проекта C ++ для проекта .NET Core похоже, но, похоже, относится только к Windows и VS.
Эта сборка из самого репо дотнет-ядра а также этот файл из того же репо выглядеть хорошей отправной точкой. Это? Может кто-нибудь объяснить, как это работает?
Задача ещё не решена.
Других решений пока нет …