Qt调用自己写的dll文件

这个dll是一个简单的两个数相加的功能参考C++动态调用dll库(例子)

首先新建win 32项目,命名为CDLL

Qt调用自己写的dll文件_第1张图片

选择dll、空项目

Qt调用自己写的dll文件_第2张图片

添加头文件,命名为dllgenerator.h

#ifndef __CDLL_H__
#define __CDLL_H__
extern "C" int _declspec(dllexport) add(int x, int y);
#endif

添加源文件,命名为dllgenerator.cpp

#include "dllgenerator.h"

int add(int x, int y)
{
    return x + y;
}

x64 debug

完成 !在文件夹中生成了CDLL.dll

新建Qt GUI项目,命名为Testadd

在.ui中拖进一个pushButton和一个textBrowser

Qt调用自己写的dll文件_第3张图片

在Testadd.h中

#pragma once

#include 
#include "ui_Testadd.h"

class Testadd : public QMainWindow
{
	Q_OBJECT

public:
	Testadd(QWidget *parent = Q_NULLPTR);
	

private:
	Ui::TestaddClass ui;
private slots:
    int Btn_on();
};

在Testadd.cpp中

#include "Testadd.h"
#include 
#include 
#include 



Testadd::Testadd(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(Btn_on()));
    

}


int Testadd::Btn_on()
{
	//QMessageBox::information(this, "OK", "Right Input");
	QString str;
	typedef int(*lpAddFun)(int, int);
	HINSTANCE hDll;
	lpAddFun addFun;
	int result = 0;
	hDll = LoadLibrary(L"CDLL.dll");


	if (hDll != NULL)
	{
		addFun = (lpAddFun)GetProcAddress(hDll, "add");/*用addFun取代dll库中的add函数*/
		if (addFun != NULL)
		{
			result = addFun(2, 3);//这里是将整型2和整型3作为参数传进去

			str=QString::number(result,10);

			ui.textBrowser->append(QString::fromLocal8Bit("2 + 3 = ") + str);
			

 
		}
		FreeLibrary(hDll);
	}
	return 0;
}

结果:

Qt调用自己写的dll文件_第4张图片

下载链接

你可能感兴趣的:(Qt)