我正在研究一个.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++ project dependency for .NET Core project类似但似乎仅适用于Windows和VS。
This build from the dotnet core repo itself和this file from the same repo看起来是一个很好的起点。是吗?有人可以解释它是如何工作的吗?