運行環境
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