C#调用C++的动态链接库

C#调用C++的动态链接库

  • 问题所在
  • 使用VS编辑所需要调用的函数(c++)
  • 创建c#项目,调用c++动态库

这是一个测试代码。

问题所在

c# 调用c++的dll库不能引用
C#调用C++的动态链接库_第1张图片
解决办法是
1:在写c++代码的时候,把他加入到dll中
2:将c++的dll库放入指定的目录
3:c#代码中引用dll的函数

问题

使用VS编辑所需要调用的函数(c++)

1 定义SUM.h头文件,头文件中就一行代码,将加法函数输出到dll中
C#调用C++的动态链接库_第2张图片

#pragma once
#include 
//将加法函数输出到dll中
extern "C" _declspec(dllexport) int sum(int a, int b);

2 定义加法函数。CPP中只有一个加法函数
C#调用C++的动态链接库_第3张图片
3 用主函数测试一下:
C#调用C++的动态链接库_第4张图片

4 将CPP属性中配置类型改为动态库.dll类型,将平台解决方案改为X64.
C#调用C++的动态链接库_第5张图片
C#调用C++的动态链接库_第6张图片
5 重新生成
C#调用C++的动态链接库_第7张图片
C#调用C++的动态链接库_第8张图片
C#调用C++的动态链接库_第9张图片
然后在项目debug目录下面会生成ConsoleApplication1.dll和ConsoleApplication1.lib两个文件(文件名是CPP项目命名的名字),将其复制

创建c#项目,调用c++动态库

创建c#项目和引入OpencCV
C#调用C++的动态链接库_第10张图片
C#调用C++的动态链接库_第11张图片

这样就配置好了C#的OpenCV环境了。
然后就是调用c++的dll库了

[DllImport("ConsoleApplication1.dll")]
        public static extern int sum(string a, string b);

在代码中引入

C#调用C++的动态链接库_第12张图片
将生成的dll库放到这个目录

D:\Code\c#\ConsoleApp1\ConsoleApp1\bin\x64\Debug

C#调用C++的动态链接库_第13张图片
C#调用C++的动态链接库_第14张图片

完整代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;

namespace ConsoleApp1
{
    internal class Program
    {
        // Use DllImport to import the Win32 MessageBox function.
        [DllImport("ConsoleApplication1.dll")]
        public static extern int sum(int a, int b);

        static void Main(string[] args)
        {
            Console.WriteLine("aa");
            Mat source = new Mat(@"D://Code//c#//YoloV5DetectPro2//YoloV5DetectPro//1.jpg", ImreadModes.Color);
            Cv2.Resize(source, source, new OpenCvSharp.Size(480, 480), 0);
            Cv2.ImShow("Demo", source);
            Console.WriteLine("show image");
            string STRING1 = "D://Code//c#//YoloV5DetectPro//YoloV5DetectPro//1.jpg";
            string STRING2 = "D://Code//c#//YoloV5DetectPro//YoloV5DetectPro//best.onnx";
            Console.WriteLine(sum(22, 44));
            Cv2.WaitKey(0); 


}
    }
}

C#调用C++的动态链接库_第15张图片

视频教程

文档(不全)

核心文档(extern “C” _declspec(dllexport) )

你可能感兴趣的:(缺陷检测,c++,c#,opencv)