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

news2024/12/22 20:01:48

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

  • 问题所在
  • 使用VS编辑所需要调用的函数(c++)
  • 创建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) )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Selenium自动化测试框架工作原理你明白了吗?

一、Selenium是什么&#xff1f; 用官网的一句话来讲&#xff1a;Selenium automates browsers. Thats it&#xff01;简单来讲&#xff0c;Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作浏览器一样。支持的…

零基础学网络安全的心得

我的学习心得&#xff0c;我认为能不能自学成功的要素有两点。 第一点就是自身的问题&#xff0c;虽然想要转行学习安全的人很多&#xff0c;但是非常强烈的想要转行学好的人是小部分。而大部分人只是抱着试试的心态来学习安全&#xff0c;这是完全不可能的。 所以能不能学成并…

神经网络:卷积的padding为SAME或VALID

1&#xff1a;卷积运算原理&#xff08;直接看图&#xff09; ①由图可知&#xff0c;output[0][0] 视野域 * 卷积核&#xff08;矩阵点击运算&#xff0c;对应位相乘然后求和&#xff0c;视野域形状与卷积核一致&#xff09;&#xff0c;而output[0][1] 下一视野域 * 卷积核…

软件测试的案例分析 - 闰年4.1

文章目的 显示不同的博客能获得多少博客质量分 &#xff08;这是关于博客质量分的测试 https://www.csdn.net/qc) 这个博客得了 60 分。 希望获得 70 分左右 正文 我们谈了不少测试的名词, 软件是人写的, 测试计划和测试用例也是人写的, 人总会犯错误。错误发生之后, 总有人…

docker安装rabbitmq以及rabbitmq_management、rabbitmqctl管理工具

&#x1f4a7; d o c k e r 安装 r a b b i t m q 以及 r a b b i t m q m a n a g e m e n t 、 r a b b i t m q c t l 管理工具 \color{#FF1493}{docker安装rabbitmq以及rabbitmq_management、rabbitmqctl管理工具} docker安装rabbitmq以及rabbitmqm​anagement、rabbitmqct…

[Eigen中文文档] 稠密矩阵分解函数对比

文档总目录 英文原文(Benchmark of dense decompositions) 本页介绍了 Eigen 为各种方阵和过约束问题提供的稠密矩阵分解的速度比较。 有关线性求解器、分解的特征和数值鲁棒性的更一般概述&#xff0c;请查看 此表。 该基准测试已在配备英特尔酷睿 i7 2.6 GHz 的笔记本电…

HIVE获取json字段特定值(单个json或者json数组)

1.获取单个json字符串里的某一特定值 函数&#xff1a;get_json_object(单个json,‘$.要获取的字段’) 示例&#xff1a; 代码&#xff1a;SELECT get_json_object(‘{“NAME”:“张三”,“ID”:“1”}’,‘$.NAME’) as name; SELECT get_json_object(‘{“NAME”:“张三”…

【 Python 全栈开发 - WEB开发篇 - 31 】where条件查询

文章目录 一、where条件查询1.关系运算符查询2.IN关键字查询3.BETWEEN AND关键字查询4.空值查询5.AND关键字查询6.OR关键字查询7.LIKE关键字查询普通字符串含有%通配的字符串含有_通配的字符串 一、where条件查询 MySQL 的 where 条件查询是指在查询数据时&#xff0c;通过 wh…

golang gocv 0.32版本windows安装 opencv4.7 依赖

准备工作: 修改Host 185.199.108.133 raw.githubusercontent.com 185.199.109.133 raw.githubusercontent.com 185.199.110.133 raw.githubusercontent.com 185.199.111.133 raw.githubusercontent.com 140.82.114.3 github.com 安装cmake与MinGW-W64 cmake下载地址…

Nacos架构与原理 - 寻址机制

文章目录 前提设计MemberLookup内部实现单机寻址 StandaloneMemberLookup文件寻址 FileConfigMemberLookup地址服务器寻址 AddressServerMemberLookup 未来可扩展点 前提 Nacos 支持单机部署以及集群部署 针对单机模式&#xff0c;Nacos 只是自己和自己通信&#xff1b;对于集…

Hbase---hfile

逻辑数据组织格式 Scanned block section&#xff1a;表示顺序扫描HFile时&#xff08;包含所有需要被读取的数据&#xff09;所有的数据块将会被读取&#xff0c;包括Leaf Index Block和Bloom Block&#xff1b;Non-scanned block section&#xff1a;HFile顺序扫描的时候该…

list容器会了吗?一文搞定它

这里写目录标题 list 数据链式存储大小操作插入操作list数据存取list容器的反转和排序 list 数据链式存储 list的优点 1.采用动态存储分配&#xff0c;不会造成内存浪费和溢出 2.链表执行插入和删除操作十分简单&#xff0c;修改指针即可&#xff0c;不需要移动大量元素 缺点…

低代码开发与数智制造:数字转型的无缝结合

随着工业4.0的到来&#xff0c;数智制造已经成为制造业发展的趋势&#xff0c;而低代码开发技术则是近几年兴起的一种轻量级开发方式&#xff0c;这两者之间的结合将为制造业的数字化转型打下坚实的基础。 低代码开发平台有什么特点&#xff1f; 首先让我们来厘清一下&#xff…

STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇

STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇&#xff0c;板载有DS18B20和TM16504位数码管。 项目简介 单片机课课程设计&#xff0c;要做一个智能温控风扇&#xff0c;达到设定的下限温度值就开启风扇&#xff0c;温度在上限和下限之间就按比例输出PWM占空比控制…

基于jsp+mysql+Spring+mybatis的Springboot旅游网站管理系统

运行环境: 最好是java jdk 1.8&#xff0c;我在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以&#xff0c;如果编译器的版本太低&#xff0c;需要升级下编译器&#xff0c;不要弄太低的版本 tomcat服务器环…

AI回答:绩效考核有哪些方法,基本靠谱

AI回答&#xff1a;绩效考核有哪些方法&#xff0c;基本靠谱 建立有效的绩效考核机制&#xff0c;比较难 但没有考核机制&#xff0c;就无法评价优劣 趣讲大白话&#xff1a;赏罚两字&#xff0c;千古大事 【趣讲信息科技191期】 **************************** 互联网企业现在流…

11 GMM——高斯混合模型

文章目录 11 GMM——高斯混合模型11.1 模型介绍11.2 通过MLE估计参数11.3 EM求解 11 GMM——高斯混合模型 11.1 模型介绍 从几何角度来说&#xff1a; 高斯混合模型表示&#xff1a;加权平均——由多个高斯分布混合叠加而成&#xff0c;如图 公式可以表达为&#xff1a; p…

【Jmeter】提取和引用Token

1.执行获取token接口 在结果树这里&#xff0c;使用$符号提取token值。 $根节点&#xff0c;$.data.token表示提取根节点下的data节点下的token节点的值。 2.使用json提取器&#xff0c;提取token 变量路径就是把在结果树提取的路径写上。 3.使用BeanShell取样器或者BeanShell后…

(数组) 941. 有效的山脉数组 ——【Leetcode每日一题】

❓941. 有效的山脉数组 难度&#xff1a;简单 给定一个整数数组 arr&#xff0c;如果它是有效的山脉数组就返回 true&#xff0c;否则返回 false。 让我们回顾一下&#xff0c;如果 arr 满足下述条件&#xff0c;那么它是一个山脉数组&#xff1a; arr.length > 3在 0 &…

Redis指令-认识NoSQl和Redis常见的通用命令

1. 认识NoSQL 非关系型数据库 NoSQL是指一类非关系型数据库&#xff0c;它们采用的数据模型不同于传统的关系模型&#xff0c;它通常使用键值对、文档、图形等非传统的数据结构进行数据存储&#xff0c;不遵循预定义的模式和模型。NoSQL数据库通常分布式、高可扩展性&#xff0…