Qt关于动态链接库的建立

之前做过的一个项目需要把.c文件转换成dll文件,今天抽出时间总结一下,

一、首先打开Qt Creator  新建库项目  

1、新建---> 库-->C++库

2、类型选择为共享库,在此我输入的名称为sld 点击下一步

3、选择自己的项目所需要的包含的模块。(这个很重要) 点击完成

4、在 .pro文件中添加上

DESTDIR =..\MyDebug

它的意思是我们把生成的内容放到MyDebug这个文件夹里,如果没有它会自动生成。点击项目把Shadowbuild 去掉勾选


设置完成后我们来实现方法测试

把sld.h修改成如下

/*******************************************SLD.H******************************************************/

#ifndef SLD_H

#define SLD_H

#include "sld_global.h"

#include <QString>


class SLDSHARED_EXPORT  Sld

{

public:

Sld();

QString GetStr();

};

#endif


/*****************************************SLD.CPP***********************************************/

#include "sld.h"

#include <QDebug>

Sld::Sld()

{

qDebug()<<" ";

}

QString Sld::GetStr()

{

return "aa";

}

我们再新添加一个窗体供测试用

我给命名为MyDialog

/***********************************************把.h文件修改成*******************************/

#ifndef MYDIALOG_H

#define MYDIALOG_H

 

#include <QDialog>

#include "sld_global.h"

namespace Ui {

class MyDialog;

}

 

class SLDSHARED_EXPORT MyDialog : publicQDialog

{

   Q_OBJECT

 

public:

   explicit MyDialog(QWidget *parent = 0);

   ~MyDialog();

 

private:

    Ui::MyDialog *ui;

};

 

#endif // MYDIALOG_H

 

/*********************************************,cpp******************************/

#include "mydialog.h"

#include "ui_mydialog.h"

 

MyDialog::MyDialog(QWidget *parent) :

   QDialog(parent),

   ui(new Ui::MyDialog)

{

   ui->setupUi(this);

}

 

MyDialog::~MyDialog()

{

   delete ui;

}

 

这里什么也没做只是把SLDSHARED_EXPORT加上了

好了就这样,我们构建一下就会在MyDebug文件夹里生成我们的dll



二、接下来是使用动态链接库

新建一个Qt WidgetsApplication项目

在pro 文件里添加 

DESTDIR =..\MyDebug 

INCLUDEPATH +=../sld
LIBS += ../MyDebug/sld.dll

再点击项目把shadow build 去掉

第二句是把sld项目的文件夹包含到这个项目里来,这样我们就能直接用它里面的头文件了。

第三句是告诉编译器lib在哪

这样我在窗体上加一个按钮并添加槽


/**********************************************H****************************************************/

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

 

#include <QMainWindow>

namespace Ui {

class MainWindow;

}

 

class MainWindow : public QMainWindow

{

   Q_OBJECT

 

public:

   explicit MainWindow(QWidget *parent = 0);

   ~MainWindow();

 

private slots:

   void on_pushButton_clicked();

 

private:

   Ui::MainWindow *ui;

};

 

#endif // MAINWINDOW_H

 

/**************************************************.cpp*******************************************************************/

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include "sld.h"

#include <QMessageBox>

#include "mydialog.h"

MainWindow::MainWindow(QWidget *parent) :

   QMainWindow(parent),

   ui(new Ui::MainWindow)

{

   ui->setupUi(this);

}

 

MainWindow::~MainWindow()

{

   delete ui;

}

 

void MainWindow::on_pushButton_clicked()

{

   MyDialog * my =new MyDialog(this);

   my->show();

   QMessageBox * msg=new QMessageBox(this);

   Sld s;

 

   msg->setText(s.GetStr());

   msg->show();

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值