1. 程式人生 > >qt在Windows下呼叫動態庫

qt在Windows下呼叫動態庫

原來呼叫動態庫採用先定義函式

typedefint(*funCD109_Init)(int);

再載入庫的方式

QLibrarymylib1("TSCLib.dll");
//判斷是否正確載入
if(mylib1.load())
{
//呼叫外部函式add()
if(tscclearbuffer==NULL)
{
returnfalse;
}
}
今天用另一種方式呼叫qt生成的動態庫:動態庫內呼叫動態庫,直接可以使用函式,更方便些。

1、將cclib.dll,cclib_global.h和 iclib.h拷貝到程式目錄

2、新建立個qt應用,加入存在的檔案cclib.h,cclib_global.h。

3、修改ccdemo.pro,增加LIBS+=-L$$PWD -lcclib

4、在mainwindow.cpp增加標頭檔案,

    Cclibttt;
QStringls_str=ttt.read();
ui->label->setText(ls_str);

5\將cc_32.dll拷貝到debug目錄(程式執行目錄)

ccdemo.pro:

#-------------------------------------------------
#
# Project created by QtCreator 2016-05-26T08:57:42
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ccdemo
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h \
    cclib_global.h \
    cclib.h

FORMS    += mainwindow.ui
LIBS+=-L$$PWD -lcclib
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<cclib.h>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Cclib ttt;
    QString ls_str=ttt.read();
    ui->label->setText(ls_str);
}

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