VisualGDB系列11:Linux C++項目中使用外部Linux庫


  根據VisualGDB官網(https://visualgdb.com)的幫助文檔大致翻譯而成。主要是作為個人學習記錄。有錯誤的地方,Robin歡迎大家指正。

 

         在《使用VS創建Linux靜態庫和動態庫》文檔中,我們介紹了如何在VisualGDB創建的應用程序中如何使用VisualGDB創建的庫(靜態庫/動態庫)。本文介紹在VisualGDB項目中使用外部的Linux庫(非VisualGDB創建的)。我們創建一個Linux項目,該項目使用Magick++庫來翻轉圖片。

 

1 啟動Linux項目向導

         啟動VS,選擇”File”->”New”->”Project”,然后選擇”VisualGDB”->”Linux Project Wizard”。設定項目名稱和位置后,點擊”OK”按鈕:

                       

 

2 選擇項目類型

         在下一頁,項目類型選擇”Application”,然后點擊”Next”:

 

 

3 選擇遠程Linux機器

         在下一頁選擇你想使用的Linux機器。我們需要在Linux機器上安裝Magick++庫,所以在”Remote computer”的右側點擊console按鈕來打開一個新的SSH console:

 

 

4 安裝libmagick庫

         安裝libmagick++-dev包。如果你的Linux系統是基於Debian的,在console窗口中運行如下命令:

sudo apt-get install libmagick++-dev

 

         當安裝完成后,回答VisualGDB向導並點擊”Next”。

 

5 設置源碼訪問方式

         為了使Linux機器輕松訪問Windows項目文件夾中的文件,我們將使用共享文件夾方式,選擇”Mount a shared Windows folder”並點擊”setup”:

 

 

6 創建共享文件夾

         VisualGDB會建議共享包含項目文件夾的其中一個文件夾。本例中,項目位於目錄” c:\projects\RotateDemo”下,我們將共享目錄” c:\projects”。為了讓Linux電腦訪問你的共享文件夾,你需要提供有效的憑證:

 

 

7 選擇登錄點(mount point)

         點擊”OK”后,VisualGDB會讓你選擇mount point,用於映像你的文件夾。本例中,我們使用” /opt/VisualGDB-projects”:

 

 

8 檢查Windows和Linux之間的通信路徑狀態

         文件夾被共享及登錄后,在向導頁面的底部有個圖表,用來檢測Linux和Windows之間的通信路徑狀態:

 

 

9 完成項目創建

         點擊”Finish”后,VisualGDB就創建了一個”Hello,World”項目,點擊”Ctrl-Shift-B”來build:

 

 

10 創建一張圖片

         配置好共享文件夾后,Linux電腦就能夠自動訪問Windows項目目錄下的文件,也能在該目錄下寫文件。在項目目錄下創建一個名叫ArrowRight.png的文件,並在上面畫一個箭頭:

 

 

11 添加遠程ImageMagick庫

         現在需要配置IntelliSense來支持ImageMagick頭文件。在項目上右鍵,選擇”VisualGDB Project Properties”,進入IntelliSense頁面:

 

         點擊”Add Remote”:

 

         點擊瀏覽按鈕並選擇” /usr/include/ImageMagick”:

 

         點擊”OK”會保存所有的設置。VisualGDB會將目錄添加到IntelliSense搜索路徑下。如果你近期也安裝了其他的庫,點擊”Edit Remote Cache”,選擇所有的目錄並點擊”Reload”:

 

 

12 修改main源碼

         修改main源碼的內容如下:

#include<Magick++.h>

#include<stdio.h>

 

int main(int argc, char *argv[])

{

    if (argc < 3)

   {

       printf("Usage: %s <Input file> <Output file>", argv[0]);

        return 1;

   }

 

   printf("Opening...\n");

   Magick::Image img(argv[1]);

 

   printf("Rotating...\n");

   img.rotate(45);

 

   printf("Saving...\n");

   img.write(argv[2]);

 

    return 0;

}

 

13 處理build錯誤

         Build項目時會提示錯誤信息:

 

         產生這個錯誤是因為,GCC include目錄和IntelliSense include目錄是分開管理的。要解決這個問題,需要打開文件flags.mak並在INCLUDE_DIRS 聲明中添加/usr/include/ImageMagick。現在build會成功但會提示鏈接錯誤:

 

 

14 修改鏈接錯誤

         要修改鏈接(linker)錯誤,需要將Magick++庫添加到LIBRARY_NAMES中:

 

         注意一下,真實的庫名字為libMagick++.a,該庫位置為標准庫的其中一個目錄。在flags.mak文件中刪除lib前綴,就像GCC按約定需要的一樣。

 

15 提供命令行參數來運行程序

         運行前我們需要提供命令行參數。最快捷的方式是使用VisualGDB工具欄。在工具欄區域右鍵使能工具欄並選擇VisualGDB。然后在文本區域輸入” ArrowRight.png ArrowRotated.png”:

 

 

16 運行並觀察結果

         按F5運行程序,或者按F10單步進入:

 

         打開項目文件夾查看程序創建的ArrowRotated.png文件:

 

         在VS輸出面板的VisualGDB Program Output視圖里,可以看到最新的調試信息:

 


免責聲明!

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



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