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

C++Test 單元測試 Read Symbols 失敗:VC6 編譯器兼容性問題

     編輯:程式設計綜合問答

錯誤現象

Parasoft C++Test 對 Demo.cpp 執行 Read Symbols 時,harness.exe 返回代碼 11,提示 Preparing harness failed。環境:VC6.0 編譯器、Windows 10。

根因分析

  • 編譯器過舊:VC6.0 (1998) 不支援現代 C++ 標準,C++Test 的插桩引擎可能依賴較新的編譯器前端(Clang/EDG)。
  • 預編譯頭/擴展語法:#include "windows.h" 引入大量 Windows API 宏,可能導致解析器內部錯誤。
  • 路徑包含中文/特殊字符:用戶桌面路徑 C:\Users\Destin\Desktop 可能觸發路徑處理 Bug。

解決方案

  1. 升級編譯器:改用 VS2019/2022 (MSVC 142/143) 或 MinGW-w64 (GCC 11+),C++Test 官方支援矩陣中不含 VC6。
  2. 簡化測試代碼:移除 windows.h,僅保留純 C++ 邏輯,驗證工具鏈是否正常。
  3. 替代輕量級框架:
    • Catch2:單頭文件,現代 C++,零依賴,語法優雅。
    • GoogleTest:業界標準,豐富斷言、參數化測試、Mock (gMock)。
    • CppUTest:嵌入式友好,支援 C/C++,記憶體檢測。

Catch2 快速上手

#define CATCH_CONFIG_MAIN
#include "catch2/catch.hpp"

int Sum(int* a, int* b) { return *a + *b; }

TEST_CASE("Sum adds two integers") {
    int x = 1, y = 2;
    REQUIRE(Sum(&x, &y) == 3);
}

編譯運行即可,無需複雜配置。

建議

除非強制維護 VC6 老專案,否則強烈建議遷移至現代工具鏈。C++Test 在舊編譯器上維護成本極高,社區資源也極少。

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