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


这是一个测试代码。

问题所在

c# 调用c++的dll库不能引用
在这里插入图片描述
解决办法是
1:在写c++代码的时候,把他加入到dll中
2:将c++的dll库放入指定的目录
3:c#代码中引用dll的函数

问题

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

1 定义SUM.h头文件,头文件中就一行代码,将加法函数输出到dll中
在这里插入图片描述

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

2 定义加法函数。CPP中只有一个加法函数
在这里插入图片描述
3 用主函数测试一下:
在这里插入图片描述

4 将CPP属性中配置类型改为动态库.dll类型,将平台解决方案改为X64.
在这里插入图片描述
在这里插入图片描述
5 重新生成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后在项目debug目录下面会生成ConsoleApplication1.dll和ConsoleApplication1.lib两个文件(文件名是CPP项目命名的名字),将其复制

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

创建c#项目和引入OpencCV
在这里插入图片描述
在这里插入图片描述

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

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

在代码中引入

在这里插入图片描述
将生成的dll库放到这个目录

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

在这里插入图片描述
在这里插入图片描述

完整代码如下:

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); 


}
    }
}

在这里插入图片描述

视频教程

文档(不全)

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

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值