首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

VS 鏈接錯誤 LNK2019 解決:運行時庫不匹配(/MT vs /MTd)

     編輯:關於C語言

錯誤現象

error LNK2019: 無法解析的外部符號 "public: __thiscall acl::TcpClient::TcpClient(void)"

根本原因

項目中不同源文件使用了不同運行時庫:

  • 有的用 多線程 (/MT)(靜態鏈接 Release 版 CRT)。
  • 有的用 多線程調試 (/MTd)(靜態鏈接 Debug 版 CRT)。
  • 或混用動態鏈接 (/MD /MDd)。

導致符號名稱修飾/庫函數不一致,鏈接器找不到匹配符號。

解決方案

統一整個解決方案的代碼生成 → 運行時庫設置:

  • Release 統一 /MT(或 /MD)。
  • Debug 統一 /MTd(或 /MDd)。

操作路徑:專案屬性 → 配置屬性 → C/C++ → 代碼生成 → 運行時庫。

最佳實踐

  • 所有項目(主程序、靜態庫、動態庫)同一解決方案配置使用相同 CRT 版本。
  • 引用第三方庫時,確認其編譯所用 CRT,或獲取源碼重新編譯。
  • 避免在同一進程混合不同 CRT(會導致堆隔離、locale 不同、文件句柄不共享等嚴重問題)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved