QtCreator中DLL的創建和使用(權威指南,經驗證):基類非QObject的類

運行環境

QtCreator4.2.1, SDK 4.8.1

原因

在製作的過程中費勁周折,最終雖然簡單,但是感覺過程並不順利。

主要原因:

        A、一方面個人悟性一般;

        B、一方面感覺幫助文檔上關於這動態庫創建、使用方面的描述過於籠統,

        C、一方面網絡文章紛紛擾擾,

        D、最後就是沒有查看例子或者源代碼。

        E、xml_global.h對初學者(我、VS's)造成的干擾。

將自己的最終結果整理一下,以此記錄,以利於後來人參照。

引用

參照的是人家http://blog.csdn.net/q496713258/article/details/6990837的博文,感覺人家的還是比較權威的,其他的確實讓我浪費了很大精力。

只是人家的是基於QObject的類,現在我需要的是非基於QOjbect的類,整體一樣只是更詳細說明,以免引起初學者困惑。

創建基類非QObject的類

第一步:創建一個動態庫工程:Xml











第二步:增加功能代碼

在xml.h的類中增加聲明:

public:

    int add(int a, int b);
在xml.cpp的類中增加實現:

void Xml::add(int a, int b)

{
    return (a+b);
}

第三步:構建動態庫工程

構建後得到xml.h和xml.dll文件,這就是我們在隱式調用時要用到的。

創建動態庫的測試程序

第一步:創建一個控制條工程:TestXml

第二步:引用相關頭文件、動態庫

在xml.pro中增加:

LIBS += ../debug/xml.dll



HEADERS += \

    ../xml.h


第三步:添加調用代碼

#include <QtCore/QCoreApplication>

#include "../xml.h"
#include <QtDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    
    Xml xml;
    qDebug()<<"1 + 2 = "<< xml.add(1, 2);
    
    return a.exec();
}


第四步:觀察運行結果

構建TestXml工程,運行如下:



後話

1、不必過多考慮xml_global.h文件,這個文件只是提供xml.h中的類是導入還是導出。

我就是不小心參照網上的一些言論,以爲global.h中是向外定義接口的,不停地增加、豐富xml_global.h文件,導致無頭蒼蠅。


2、這個動態庫是在qt下編寫供qt應用程序調用的,如果需要在vs下調用這樣的動態庫,未知。

就好像vs下寫的動態庫vs下調用很簡單,但是使用其它平臺調用,就需要定義標準接口了一樣。


3、從簡單入門,這個就很簡單。

如果想深入,可以研究動態顯式調用、靜態顯式調用。

如果還想提高,還可以看看這個女士的博文(接口方面的):

Qt Creator 爲我們的程序寫一個動態鏈接庫help.dll

http://blog.csdn.net/a_sungirl/article/details/8051746

修改:"Qt Creator 爲我們的程序寫一個動態鏈接庫help.dll”使代碼寫的更專業

http://blog.csdn.net/a_sungirl/article/details/8053084





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章