QT调用C#的Dll

1:环境:VS2017  QT 5.12.4

(1)说明:Qt是不能直接调用C#生成的dll,需要将C#的编写的dll通过CLR编译成lib

(2)检查VS环境是否装好:看下图勾选部分是否安装,没有安装需及时安装,C#这边生成dll,C++这边用来生成lib文件

 

 

2:编写C#的Dll

选择下图所示功能进行编程,实际项目命名需规范对待

3:编写代码后,点击生成,生成解决方案后,在对应的项目文件夹bin/debug里面找到对应的Dll,代码及对应的Dll截图如下图,找到对应的dll后存储到自己找得到的位置,一会儿用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpDllTest
{
    public class TestClass
    {
        public int Add_Num(int numberRight,int numberLeft)
        {
            int sum = numberRight + numberLeft;
            return sum;
        }
    }
}

 

4:使用CLR生成Lib

创建CLR项目:如下图,选择CLR类库,命名在实际项目中需要规范对待,创建项目后,将刚刚得到的C#版的DLL放进项目文件中,代码中需要using,如下图右所示位置,

 

 

Dll放进项目中后,编写代码,此时代码与C#代码对应处理即可

代码如下,编写后点击生成,生成解决方案后,在项目文件夹中的X64/debug文件夹中即可找到对应的lib和dll文件,具体路径如下图,生成后,将dll和lib文件放到自己可以找到的位置,一会儿用,注意,VS中选择的X64环境或者X86环境,需要与QT对应,否则会出问题

#pragma once

using namespace System;
#using "./CSharpDllTest.dll"

using namespace CSharpDllTest;
extern "C" _declspec(dllexport) int api_Add(int numberRight,int numberLeft)
{

	TestClass classTest;
	return classTest.Add_Num(numberRight, numberLeft);
}

 

 

5:QT中使用Lib文件

创建QT工程选择对应的X64或者X86即可,此处不截图

创建后分别把Lib和Dll文件放到项目文件夹和debug文件夹中,然后引用Lib文件,

选择项目,右键添加库,如下图

 

库文件选择后包含路径会自动补充,然后下一步,完成即可,

引用Lib文件代码如下

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
extern "C" _declspec(dllexport) int api_Add(int numberRight,int numberLeft);
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    int all=api_Add(5,9);
    qDebug()<<"All:::::"<<all<<endl;
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行结果如下

 

后面如果说接口多了之后,是否考虑在QT里面用一个类去封装这些API

 

  • 13
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阔耐滴喵星人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值