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。想包含這個模組下各種類的定...