根據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視圖里,可以看到最新的調試信息: