c#_调用c++的动态库并封装成为c#的库文件

在windows上的开发, 一般软件都是用的c#,对于算法生成的c++的动态库dll,在给到软件之前,最好自己在c#中写一个测试程序,验证一下该c++的动态库dll的有效性,同时可再将该算法封装成为c#的接口,可直接给到软件调用。

步骤一:

首先,生成一个c++的动态库dll,以实现加减乘除的功能为例,可见上一篇博客: 

c++_创建动态库dll并调用_9分钟带帽的博客-优快云博客

步骤二:

在vs2019中,新建工程,语言选择c#,新建一个"类库(.NET Framework)"的工程,在Class1.cs的文件中,添加以下的代码:

using System;
using System.Runtime.InteropServices;

namespace AddAlgorithmCsharp
{
    public class AddAlgorithmCls
    {
        [DllImport("AddAlgorithm.dll")]
        public static extern float add(float a, float b);
        [DllImport("AddAlgorithm.dll")]
        public static extern float subtract(float a, float b);
        [DllImport("AddAlgorithm.dll")]
        public static extern float multiply(float a, float b);
        [DllImport("AddAlgorithm.dll")]
        public static extern float divide(float a, float b);


        public float add1(float a, float b)
        {
            float c = add(a, b);
            return c;
        }
        public float subtract1(float a, float b)
        {
            float c = subtract(a, b);
            return c;
        }
        public float multiply1(float a, float b)
        {
            float c = multiply(a, b);
            return c;
        }
        public float divide1(float a, float b)
        {
            float c = divide(a, b);
            return c;
        }
    }
}

该代码中,先import了c++的动态库,然后声明了已有的函数接口,接着在该c#的AddAlgorithmCls的类中,基于c++中已有的函数接口,声明了c#的新的函数接口。在重新生成该项目之前,需要将配置管理器改为x64,以及上一步生成的c++的动态库AddAlgorithm.dll放到运行目录下。

 

即可生成AddAlgorithmCsharp.dll的c#的函数接口。

步骤三:

在该解决方案中,新建"空项目(.NET Framework)"的工程,添加Program.cs的文件,内容如下:

using AddAlgorithmCsharp;
using System;
using System.Runtime.InteropServices;


namespace AddAlgorithmCsharpDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            AddAlgorithmCls algorithm = new AddAlgorithmCls();

            float a = 5.0f;
            float b = 2.5f;
            Console.WriteLine("a+b={0}", algorithm.add1(a, b));
            Console.WriteLine("a-b={0}", algorithm.subtract1(a, b));
            Console.WriteLine("a*b={0}", algorithm.multiply1(a, b));
            Console.WriteLine("a/b={0}", algorithm.divide1(a, b));

            Console.WriteLine("HelloWorld!");
            Console.ReadKey();
        }
    }
}

右键"引用"->"添加引用"->"浏览",找到上一步生成的AddAlgorithmCsharp.dll的文件,编译一下,然后把第一步的c++的动态库AddAlgorithm.dll放到该工程的运行目录下,重新生成,运行。

运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值