在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放到该工程的运行目录下,重新生成,运行。
运行结果如下: