如何在我的dotnet核心项目的构建过程中包含C ++动态库项目?

时间:2018-02-07 04:33:40

标签: c# c++ .net-core

我正在研究一个.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.cdotnet build进行构建。 这有效。我甚至惊喜地发现它有多快。 现在我想知道如何集成C库的构建过程 进入dotnet build

理想情况下,dotnet build会调用makecmake 如果有更改,请更新动态库。 如果那不可能,最好的选择是什么? 从我的C代码创建版本并以某种方式引用C#中的版本?

C++ project dependency for .NET Core project类似但似乎仅适用于Windows和VS。

This build from the dotnet core repo itselfthis file from the same repo看起来是一个很好的起点。是吗?有人可以解释它是如何工作的吗?

0 个答案:

没有答案