首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Visual Studio 2010 MFC 專案:Framework and References vs Additional Dependencies 引用 DLL 差異詳解

     編輯:程式設計綜合問答

VS2010 MFC 專案屬性中有兩處可引用 DLL:Framework and References** (Common Properties) 與 **Additional Dependencies** (Linker → Input)。兩者用途、適用場景截然不同。

核心差異對照

屬性頁完整路徑作用對象適用場景機制
Framework and ReferencesCommon Properties → Framework and References.NET 組件 / WinMD / 同方案專案輸出**同方案內 C++/CLI、C#、VB.NET 專案** 相互引用建立專案間建構相依性,自動複製輸出至輸出目錄
Additional DependenciesLinker → Input → Additional Dependencies原生 .lib 匯入庫 / 靜態庫**第三方原生 C++ 庫**、舊版 DLL 配套 .lib、系統庫連結器解析外部符號,需 .lib 檔案,DLL 需放在運行路徑

詳細說明

Framework and References (新式、托管友善)

  • 專為 **C++/CLI 混合模式** 專案設計,支援引用 .NET 組件 (`.dll`)、Windows Runtime 元件 (`.winmd`)。
  • 加入同方案專案引用時,自動建立 **專案相依性** (Build Order),確保被引用專案先建構。
  • 建構時自動將引用組件複製至 `$(OutDir)`,執行期可直接載入。
  • 不適用 於純原生 C++ 靜態庫 (`.lib`) 引用。

Additional Dependencies (傳統、原生連結器)

  • 告訴連結器 (link.exe) 需要解析的 **匯入庫 `.lib`** 檔案名稱 (如 `mylib.lib`)。
  • 需在 Linker → General → Additional Library Directories 加入 `.lib` 所在目錄。
  • 對應的 `.dll` 執行期必須在:應用程式目錄、系統目錄、PATH 環境變數目錄中。
  • 適用於**所有原生 C++ 專案** (MFC、Win32、Static Library、DLL)。

實務選擇指南

  1. 同方案 C++/CLI 專案互引 → Framework and References** 加入專案引用。
  2. 引用 C#/VB.NET 組件 → Framework and References** 加入組件引用 (瀏覽 .dll)。
  3. 引用第三方原生 C++ 庫 (如 OpenCV, Boost, 自製靜態庫) → Additional Dependencies** 加入 `.lib`,目錄加入 Library Directories。
  4. 引用系統庫 (kernel32.lib, user32.lib 等) → 通常預設已包含,若需顯式加入用 Additional Dependencies。

常見誤區

「Additional Dependencies 直接加 .dll」——錯誤。連結器需要 `.lib` (匯入庫) 解析符號,`.dll` 只在執行期載入。

掌握兩者分工:Framework and References 管建構相依與托管組件部署,Additional Dependencies 管原生符號解析,即可避免「找不到符號」或「執行期找不到 DLL」雙重坑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved