將編譯過的C++庫迅速部署在Visual Studio新項目中

来源:https://www.cnblogs.com/fkxxgis/p/18217914
-Advertisement-
Play Games

本文介紹在Visual Studio中,通過屬性表,使得一個新建解決方案中的項目可以快速配置已有解決方案的項目中各類已編譯好的C++第三方庫的方法~ ...


  本文介紹在Visual Studio中,通過屬性表,使得一個新建解決方案中的項目可以快速配置已有解決方案的項目中各類已編譯好的C++第三方庫的方法。

  例如,我們現有一個解決方案,其中的一個項目需要調用ArmadilloOpenCV等多個不同的C++第三方庫;我們也已經在這一項目中配置好了所需的各個第三方庫,如下圖所示。

image

  隨後,我們新建了一個解決方案,且這一解決方案中的一個新的項目需要同樣需要調用前述項目ArmadilloOpenCV等多個不同的C++第三方庫。如下圖所示,由於此時我們還沒有對新的項目進行第三方庫的配置,因此在#include代碼中會有報錯信息存在。

  針對這一新的項目,我們可以參照文章如何在Visual Studio新C++項目中調用之前配置過的庫?中提及的方法,分別對新項目的附加包含目錄附加庫目錄附加依賴項等3個屬性加以配置。然而,這樣手動配置一次還好,如果今後還會有多個新的項目需要配置同樣的第三方庫,那麼每一次都手動配置就顯得十分麻煩。因此,我們可以藉助Visual Studio中的屬性表,完成這一操作。

  首先,我們需要在原有的項目(也就是已經配置好各類第三方庫的項目)中,選擇“視圖”→“其他視窗”→“屬性管理器”選項,如下圖所示。

  隨後,在“解決方案資源管理器”附近,找到“屬性管理器”,並雙擊項目名稱將其展開;隨後,基於我們代碼需要運行的環境屬性(比如Release還是DebugWin32還是x64),將對應的屬性信息展開,並右鍵選擇“添加新項目屬性表...”。如下圖所示,我這裡因為希望在Debug版本的x64環境下運行代碼,因此就選擇在這一環境屬性信息對應處右鍵。

  這裡再提一句,如下圖所示,我們也可以選擇直接在項目名稱處右鍵;但建議大家還是按照實際需求來。

  這樣的話,通過我們後續的操作,就會在每一個環境屬性信息對應的欄目下出現屬性表;如下圖所示。

  我們繼續前述操作。在選擇“添加新項目屬性表”後,會彈出“添加新項”視窗;我們在其中配置.props格式的屬性表文件的名稱與保存路徑即可。

  此時,就可以在Debug版本的x64環境對應的一項中,找到我們剛剛創建的屬性表,並雙擊。

  隨後,即可彈出屬性表的屬性頁;如下圖所示。可以看到,其實這個屬性表的屬性頁就是我們常用的項目的屬性視窗

  此時我們要做的,就是將原有項目(也就是已經配置好各類第三方庫的項目)的附加包含目錄附加庫目錄附加依賴項等3個屬性,複製到屬性表的屬性頁中。這3個屬性的位置具體可以參考文章如何在Visual Studio新C++項目中調用之前配置過的庫?

  複製的時候這裡也有幾個小技巧。首先,我們可以在打開屬性表的屬性頁(或項目的屬性頁)時,通過切換“解決方案資源管理器”與“屬性管理器”的選中狀態,無縫切換兩個屬性頁視窗。

  此外,我們可以在原有項目的附加包含目錄附加庫目錄中,通過複製“計算的值”視窗中的內容,實現跨行批量複製,如下圖所示。

  然後首先將其複製到文本文件、Word文檔文件等作為中轉,再將其逐行粘貼值屬性表的對應位置處;下圖即為複製後的屬性表的附加庫目錄

  而對於附加依賴項,由於其不是一行一行來設置的,因此複製起來就更快一些。

  完成對附加包含目錄附加庫目錄附加依賴項等3個屬性的複製工作後,一定記得需要在屬性表名稱處右鍵,將其保存。

  隨後,我們打開新的項目,也就是待配置第三方庫的項目,同樣打開“屬性管理器”。

  隨後,在對應的環境屬性一欄中,右鍵並選擇“添加現有屬性表...”選項。

  隨後,找到我們剛剛配置好的.props格式的屬性表文件,並選擇。

  此時,在新項目的屬性管理器中,就可以看到我們的屬性表已經導入了。但是,有時可能會出現如下圖所示的情況,即導入屬性表後,新的項目依然無法調用這些第三方庫。

  並且此時雙擊打開屬性表的屬性頁,發現其中我們剛剛配置的附加包含目錄附加庫目錄附加依賴項等3個屬性都還是空白的。

  針對這一情況,我們可以首先在新的項目中,在剛剛導入的屬性表名稱處右鍵並選擇“移除”;隨後,將這一新項目所在的解決方案關閉,並再一次在原有項目中保存屬性表;隨後,將原有項目所在的解決方案關閉,打開新的項目所在的解決方案,重新導入屬性表。一般情況下,新的項目就可以使用這些第三方庫了。

  在今後若有其他新的項目需要配置這些第三方庫,我們就可以直接導入這一屬性表文件,從而實現快速的環境配置。

  至此,大功告成。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文深入探討了Kubernetes POD控制器的基礎知識、配置示例、最佳實踐,並通過一個電子商務公司的案例分析,展示瞭如何在複雜的生產環境中應用POD控制器,以優化雲服務架構。 關註【TechLeadCloud】,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI產品研發 ...
  • 目錄一、背景介紹1.1 爬取目標1.2 演示視頻1.3 軟體說明二、代碼講解2.1 爬蟲採集模塊2.2 軟體界面模塊2.3 日誌模塊三、轉載聲明 一、背景介紹 1.1 爬取目標 用python開發的爬蟲採集軟體,可自動按關鍵詞抓取小紅書筆記數據。 為什麼有了源碼還開發界面軟體呢?方便不懂編程代碼的小 ...
  • 前言 大家好,我是老馬。很高興遇到你。 我們為 java 開發者實現了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何處理的,可以參考我的另一個項目: 手寫從零實現簡易版 tomcat minicat 手寫 ngin ...
  • Design OOP use C 使用c語言實現面向對象特性 以底層思維來理解面向對象。我所理解的oop:為不同的數據元提供穩定的處理邏輯框架,同時提供覆寫的可能,支持不同數據元個性化定製有限的邏輯; 多態特性: 基類實現一組通用處理邏輯介面,子類通過改變特定介面的執行邏輯實現將子類與個性化操作綁定 ...
  • 1 從 Spring Boot 3.1 升級 1.1 參數名稱發現 Spring Boot 3.2 使用的 Spring Framework 版本不再嘗試通過解析位元組碼來推斷參數名稱。如果您在依賴註入或屬性綁定時遇到問題,請務必檢查您是否在編譯時使用了 -parameters 選項。有關更多詳細信息 ...
  • 1 現象 SpringBoot由3.1.0升級為3.2.0時報的錯: 直接debug進入該行,看到報錯的bean信息: 看到是MyBatis出問題。 2 處理 MyBatis 先想到mybatis-spring版本較低導致。 大家應該都用的MyBatisPlus,其實可暫緩升級3.2,等待一段時間, ...
  • 概述 什麼是配置?chatGPT是這麼回答的: 配置項(Configuration Item)是一個廣泛使用的術語,尤其在軟體開發、系統管理和IT服務管理中。它通常指的是系統或應用程式中的一個可配置的元素,可以用來調整系統或應用的行為、性能或其他特性。配置項可以是軟體、硬體、文檔、資料庫、參數設置等 ...
  • 將多個第三方包封裝成一個項目後,如果你的目的是讓其他開發人員可以直接引用這些依賴,一般來說有兩種常見的方式: 打成JAR包:將封裝好的項目編譯打包成JAR文件,其他開發人員可以將這個JAR文件添加到他們的項目中,併在項目的構建工具(比如Maven)中配置該JAR作為依賴。這樣做的好處是簡單直接,其他 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...