Qt文件閱讀筆記 QLibrary基本概念及例項

2021-10-07 06:15:40 字數 1506 閱讀 3130

qlibrary類是在程式執行時載入動態動態鏈結庫的。

可以通過使用建構函式新增需要載入的鏈結庫路徑,或者使用setfilename()函式設定路徑。如果是絕對路徑就直接載入,如果是相對路徑qlibrary會在相當路徑及所有環境變數中尋找。

如果都找不到,會通過平台的不同,去加對應的.so或.dll檔案。

這個意思就是,當在windows上載入lib庫的引數為demo,那麼qlibrary會在後面加.dll。如果是linux就會加.so。

通過呼叫load()函式載入鏈結庫,使用isload()函式去判斷載入是否成功,使用resolve()與load()差不多,但是當如果load失敗,將會嘗試再次載入。當經過一次載入後,鏈結庫將會儲存到記憶體中直到應用程式退出。使用unload()函式解除,如果有多個qlibrary使用了同乙個動態鏈結庫unload()將返回false。直到最後乙個qlibrary解除,才會成功。

這裡有2個概念:

這裡有個要注意的此處只能搞c的dll,不能搞c++的dll

這裡有2個呼叫法:

方法1:

qlibrary mylib("mylib");

typedef void (*myprototype)();

myprototype myfunction = (myprototype) mylib.resolve("mysymbol");

if (myfunction)

myfunction();

方法2:

typedef void (*myprototype)();

myprototype myfunction =

(myprototype) qlibrary::resolve("mylib", "mysymbol");

if (myfunction)

myfunction();

下面是乙個例子:

使用msvc2015編譯的dll

乙個加和乙個減的函式:

使用qt進行呼叫(這裡用wingw)

qt**如下:

qdebug() << "----------華麗的分割線----------";

typedef int (*sub)(int a, int b);

sub function2 = (sub)qlibrary::resolve("d:\\qtproject\\librarydemo\\dll_c_demo.dll", "sub");

if(function2)

return a.exec();}

Qt文件閱讀筆記 qmake入門指南

目錄 qmake的作用 簡單的小例子 跨平台的例子 1.生成makefile檔案 2.生成moc和uic檔案 3.用vs開啟qt時無需要改變pro檔案就能能夠生成專案 在linux中qmake的主要目的是簡化程式設計師編寫makefile 手寫乙個簡單的pro檔案,用再用qmake下 首先寫乙個小例...

Qt文件閱讀筆記 構造WebSocket服務端

目錄 基本概念 與例項 因為週末搞了個spring boot的,但是想想,這個websocket只是乙個協議而已,c 應該也能搞,在此就搞了這篇博文,這裡主要是用qt,寫websocket,然後用html寫前端,讓連線上的客戶端,進行傳送資料,接收資料,單獨傳送等等等,也就是使用websocket做...

Qt文件閱讀筆記 Qt Core的官方解析

qt core 目錄 getting started threading and concurrent programming input output,resources,containers additional frameworks 所有的qt模組都依賴qtcore。想包含這個模組下各種類的定...