QT生成動態連結庫.so檔案
首先是新建一個工程,選擇C++庫,開啟後是這樣的:
然後輸入新建的名稱,下一步,記得勾選Qtcore那個(就是預設的那個),否則編譯似乎不能通過。因為後面自動生成的.h檔案裡還有這個。
自動生成的有4個檔案一個pro,一個cpp,一個XXX.h檔案,一個XXX_global.h
可以檢查下.pro裡的型別是不是lib型別。
下面就可以在XXX.h檔案裡宣告自己要寫的函式,進行巨集定義,#define一些用到的常量。
比如類名為Mm,那麼
public:
int Mm::aa(int a,int b){
int c=a+b;
return c;
}
這樣呼叫這個aa傳回來的就是c的值了。
其中需要注意的是,建構函式和類同名,他不能有返回值。不能是int和void型別,都不正確。
所以需要有返回值的時候,函式名不能和類同名!之後我們還可以寫別的函式。都放在這個類中。
函式的實現需要點開.cpp檔案,cpp中專門寫實現這些函式(方法)的程式碼。
下面說呼叫這個函式:
新建一個工程,注意在pro檔案中需要將lib的目錄和.so的目錄加進去。
lib目錄(就是.h檔案所在目錄):INCLUDEPATH +=/home/will/Projects/pluginTest/
.so目錄為:LIBS += -L/home/will/Projects/build-mm-Desktop-Debug\
-lmm (一定不能少了這個,這個是庫的名字l+類名)
如下圖所示:
在main.cpp中呼叫這個函式。
int main(){
Mm mm;//需要先新建這個物件
int c=mm::aa(2,5);//mm這個物件中有aa這個函式,這樣就實現了呼叫。
printf("%d\n",c);
}
至此,就完成了整個過程!