錯誤
Logger_D.lib(StaticLogger.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'
原因
靜態庫編譯為 **Release** (`_ITERATOR_DEBUG_LEVEL=0`),但主項目為 **Debug** (`=2`),或反之。兩者必須一致。
徹底解決清單
- 運行庫一致:屬性 → C/C++ → Code Generation → Runtime Library:
- Debug 版:**Multi-threaded Debug (/MTd)** 或 **Multi-threaded Debug DLL (/MDd)**。
- Release 版:**/MT** 或 **/MD**。
- 庫與主項目**完全相同**。
- 預處理器宏:Debug 定義 `_DEBUG`,Release 定義 `NDEBUG`,兩邊一致。
- 配置管理器:確認 Solution Platforms/Configurations 對應正確 (x64/Debug 對應庫 x64/Debug)。
- 清理重建:Delete 所有 `.obj/.lib/.pch`,Rebuild 全部。
手動修補 (不推薦)
二進制編輯器修改 `.lib` 中 `_ITERATOR_DEBUG_LEVEL` 字節 (0x30→0x32) 僅能暫時通過鏈接,運行時仍會崩潰 (迭代器調試邏輯不匹配)。