一、制作动态库C++动态库
C++生成DLL,项目名称mydll
.h文件
#ifndef MDll_H
#define MDll_H
#ifdef MYLIBDLL
#define MYLIBDLL extern "C" _declspec(dllimport)
#else
#define MYLIBDLL extern "C" _declspec(dllexport)
#endif
//第一种格式
MYLIBDLL double Add(double a, double b);
//第二种格式
//extern "C" {
//_declspec(dllexport) double Add(double a, double b);
//};
#endif MDll_H
.cpp文件
#include "Mdll.h"
#include <iostream>
using namespace std;
double Add(double a, double b)
{
return a+b;
}
.def文件
LIBRARY "MYDLL"
EXPORTS
Add @1
二、调用动态库
1、创建工程并构建项目,将 dll和lib拷贝到项目目录下和生成的debug/release目录下
2、添加外部库,项目目录下的
3、调用
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLibrary>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//加载动态库
QLibrary mylib("mydll");
if(mylib.load())
{
//声明函数指针
typedef double (*MyFun)(double,double);
MyFun mm=(myadd)mylib.resolve("Add");
if(mm)
{
double ret=mm(100,200);
qDebug() <<ret;
}
}
}
三、调用静态库
静态库需要两个文件.h和.lib,将这两个文件拷贝到工程目录下
在Qt工程文件中添加下列信息
LIBS += -LD:/Learn/CODE/Qt/temp/ -ILogitechSteeringWheelLib
说明:-L+静态库路径(中间没有空格)
-I+静态库名称(中间没有空格,-I是大写的i,静态库名后不要加.lib)
引入.h文件就可以正常使用了