Linux下用QT創建動態庫文件 .os,並調用


參考鏈接:https://blog.csdn.net/csdn83419527/article/details/78840798

     https://blog.csdn.net/qq_40263915/article/details/104884917

======創建動態庫.os文件======

1.新建工程

  點擊Qt Creator菜單欄“文件”-->“新建文件或項目”,選擇Library,C++庫,點“choose”。

  

 

   

 

   一路Next下去即可,在Kits步驟也是,按照系統默認設置即可,除非自己需要改變編譯等配置;直接 點“下一步”即可。

  

 

   最后完成創建,如果需要進行版本控制可以進行設置,否則點“完成”即可。

  

 

 2.代碼實現

  

  創建后,Qt Creator自動生成三個文件分別是XXX_global.h、XXX.h、XXX.cpp。其中XXX_global.h是一個宏定義文件,如下圖所示。

  

 

   注意:圖中標藍的部分,可以拷貝至XXX.h中,同時將XXX_global.h刪除掉,這樣項目也可以直接編譯使用,不刪除也沒有問題,只是使用時,使用程序需要同時將XXX_global.h、XXX.h包含,否則會報找不到XXX_global.h錯誤。這里建議把藍標部分復制到XXX.h文件中,這樣后續調用只需要包含一個即可,標藍部分拷貝到XXX.h中的位置如下圖所示。

  

 

 

   下面編寫一個測試函數,先在頭文件聲明

  

 

   接着在 .cpp 編寫實現代碼邏輯,這里實現把兩個參數相加並返回。

  

 

 3.編譯生成 .os 庫文件

  

 

  編譯后會彈出一個界面,不用管它,直接關閉即可

  

   編譯完成會在Release文件夾里生成的4個庫文件,如下圖。

  

 

   到這里就已經完成 .os 庫文件的創建了,為了方便后續給別調用,我們可以新建一個文件夾,把上面生成的4個庫文件和XXX.h文件保存在里面,后續只需要把這個文件夾給別的項目就可以調用了

  

 

======實現調用動態庫.os文件======

1.新建立工程

  建立工程這里不細說了,具體可以參考:https://www.cnblogs.com/xingboy/p/14376226.html

  項目建成如下:

  

2.調用os庫

  把上面新建保存有需要用的os庫文件跟.h文件的文件夾復制到,新建項目的文件夾里,然后在313kDemo處右鍵點擊,彈出,選擇Add Library。

  

 

   然后選擇外部庫.

  

 

   

 

   

 

   完成后.por文件會出現如下內容

  

 

   $$PWD用於指定包含.pro文件目錄的完整路徑;INCLUDEPATH 指定編譯項目時被搜索到的 #include 目錄;LIBS指定了鏈接到項目中庫的列表,添加的是共享庫文件,-L添加目錄,-l指定共享庫名稱(注意是共享庫項目名而非共享庫文件名);DEPENDPATH是程序編譯時依賴的相關路徑。然后我們就可以添加頭文件,類似於內部定義的函數一樣實現調用了。

  先在項目里添加os庫文件的.h文件,把保存有os文件與.h文件的文件夾里的.h文件添加進去

  

  然后在mainwindow.h文件里包含os庫的.h文件,其實不一定在mainwindow.h文件里包含,在其他文件包含也行,這里為了方便就直接在這里包含了;然后對OS庫的頭文件里聲明的類名進行重命名。

 3.代碼測試

  在UI界面添加3個文本框跟一個按鈕,編輯代碼實現,獲取兩個文本款數值,調用os庫里的函數,實現該函數功能,並把結果輸出在另一個文本框。

 

   選中按鈕,右擊轉到槽,添加實現代碼。

void MainWindow::on_pushButton_clicked()
{
    int a=ui->textA->text().toInt();  //獲取文本框的值
    int b=ui->textB->text().toInt();
    int data=mySdk.MyTest(a,b);
    ui->textC->setText(QString::number(data)); //把數值轉為字符串輸出到文本框
}

4.運行查看結果

  

 5. 注意事項

  如果你把程序與so動態鏈接庫文件,復制出來使用,需要修改 ld.so.conf 文件,指定的動態庫搜索路徑,執行 sudo vim /etc/ld.so.conf 在該文件里添加你保存動態鏈接庫的路徑,直接添加即可;然后執行 sudo ldconfig 使能該文件,如果報錯 is not a symbolic link 可參考我另一個博客 https://www.cnblogs.com/xingboy/p/15434271.html  解決;下面附上一段以前寫的關於 Linux 怎么配置使用 QT 程序與 so 文件的環境說明:

# You use the application of aa158 that need deploy some environment when first time .
 
       Firest : If you computer without the Qt5 environment well then you need deploy the environment ,

                  that you  need key in " sudo apt-get update " on the console , 

                  next key in " sudo apt-get install qt5-default " to deploy the environment ,
                  
                  last key in " sudo apt install libqt5serialport5* -y " on the console .

  Sencond : You need key in " sudo vim /etc/ld.so.conf " on the console , 

                  then tack on path of applicantion in the " /etc/ld.so.conf " .

              Exemplify tack on " /home/aplex/Desktop/AplexAA158 " in the " /etc/ld.so.conf " .
 
       Third : You need key in " sudo ldconfig " on the console that enable it .
       
      Finally: when into the folder of application after you need key in " sudo ./AA158 " to perform the application  .

 

 

  


免責聲明!

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



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