QT生成與調用共享庫


1.創建C++庫

1.1點擊New Project

  

 

 1.2選擇庫模板

  

   選擇Library”中的”C++,再點擊Choose”。

 

1.3選擇共享庫

  

   給共享庫取個名稱,並指定生成文件存放路徑。再點擊“下一步”。

 

1.4選擇編譯器

  

   再點擊“下一步”。

 

1.5選擇所需要的模塊

  

   默認選擇QtCoreQtCore模塊提供核心的非圖形用戶接口功能,所有其他Qt模塊都依賴於這個模塊,如果您使用qmake來構建您的項目,則默認將QtCore包含在內)

相信,大部分人封裝動態鏈接庫的時候是不需要將界面封裝的,只需要封裝核心代碼,故我們在此不選擇QtGui。但如果需要將圖形界面一起封裝,就需要選擇該項。

  再點擊“下一步”。

 

1.6項目管理

  

   點擊”完成“。

 

1.7點擊項目,勾掉Shadow build,使.dll不生成在debug目錄中,生成在我們自己創建的目錄下面,方便查找和使用

 

1.8 .pro文件中,添加如下代碼

  DESTDIR =..\MyDebug

  使生成的.dll文件放在該目錄下,自動創建該目錄。

  

 

1.9 點擊運行,即可生成。(此彈框不用管它,代表編譯成功,已生成文件)

  

注意:

  當創建完C++庫的工程后, 可以看到QT自動生成了一個名為serial_global.h的文件。其中serial是我工程的名字。

#ifndef SERIAL_GLOBAL_H
#define SERIAL_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(SERIAL_LIBRARY)
#  define SERIALSHARED_EXPORT Q_DECL_EXPORT
#else
#  define SERIALSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // SERIAL_GLOBAL_H

  其中第6和第7行的意思如果定義了SERIAL_LIBRARY,SERIALSHARED_EXPORT定義為Q_DECL_EXPORT,否則定義為Q_DECL_IMPORT。這就是把對象導出的語句。

  SERIAL_LIBRARY在.pro中定義

 

   在對應的serial.h中可以看到

   在Serial前面就跟着SERIALSHARED_EXPORT。就相當於把Serial導出。所謂的導出,就是將其編譯成一個dll文件后,其他的文件可以使用這個導出類。

  所以如果自己定義的函數不在類里面,就要單獨的導出。    

   也可以用extern "C" { }把里面的函數全部包含進去。

 

2.調用C++庫

2.1 手動添加

2.1.1在文件目錄創建include目錄和lib目錄

   把對應的庫放到lib目錄中,把對應的頭文件放在include目錄中。

 

2.1.2 在.pro中添加對應信息

LIBS += -L$$PWD/lib -lSerial

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include

  

 

2.1.3 在main.cpp中添加頭文件

   這樣就可以直接調用共享庫中的對象或者函數了。

 

2.2 自動添加庫

  直接點擊test,然后單間右鍵。里面有一個“添加庫”。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM