【无标题】

C#调用C++接口主要事项。

  1. C#调用普通类型数据自定义数据结构C++接口使用引用即可返回所需值,数据结构C++和C#都要定义如下图所示:
    C++端在这里插入图片描述
    C#端:
    在这里插入图片描述
  2. C#端必须使用关键字DllImport重新声明接口,使用DllImport关键字需包含系统域名:using System.Runtime.InteropServices下代码所示:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Data;
using System.Configuration;
using System;
using OpenCvShar
 class Program
    {
      [DllImport("MoniterExtractInterface.dll", EntryPoint = "GetUpAndButtPoint",CallingConvention.Cdecl)]
        private static extern boolGetUpAndButtPoint(ref IntPtr InImage, stBlobRect BolbRec, ref stUpAndButtPoint OutPoint);

3.C++导出接口必须使用extern "C"关键字导出如下代码:

extern "C"
{
	//屏幕提取流程
	__DLL bool MoiterExtractModelFlow(cv::Mat **SrcImage, cv::Mat **mSearchImg, cv::Mat **DisImage);
	//获取端点
	__DLL bool GetUpAndButtPoint(cv::Mat **SrcImage, stBlobRect BolbRec, stUpAndButtPoint &OutPoint);
}

4、C++生成dll库必须放在C#生成可执行文件目录下。
5、如果需要调试在C#中调试C++调用的接口必须把C++生成的pdb文件同步拷贝到C#生成可执行文件目录下,同时C#工程需要把方案选选项属性 代码优化去掉 和 启动本机代码调试 勾上,如下图所示:
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪的猪头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值