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

VS2010 整合 MIRACL 庫發生連結錯誤:庫版本不匹配

     編輯:程式設計綜合問答

錯誤截圖顯示連結器找不到符號,核心原因:**`ms32.lib` 是 VC6 時代產出的靜態庫,二進位格式與 VS2010 (VC10) 不相容**。

解決路徑

1. 取得 VS2010 版本的 MIRACL 庫

  • 官網下載最新 MIRACL 源碼,用 VS2010 開啟專案重新編譯產出 `miracl.lib` / `ms32.lib`。
  • 或改用 NuGet 套件 `MIRACL`(若有維護版)。

2. 若必須沿用舊庫,嘗試以下權宜之計(不保證穩定)

  • 專案屬性 → 連結器 → 命令列 → 附加選項:`/NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcd.lib`
  • 執行期程式庫統一設為 **多執行緒偵錯 (/MTd)** 或 **多執行緒 (/MT)**,與舊庫編譯選項一致。
  • 關閉連結器優化參考 (`/OPT:NOREF`)、啟用 COMDAT 折疊 (`/OPT:ICF`)。

3. 程式碼細節修正

// 原碼重複宣告 big m,c,d,e; 及 big m=mirval(0); 導致重複定義
void CxxxDlg::OnBnClickedRegister() {
    big m, c, d, e;           // 只宣告一次
    miracl *mip = mirsys(100, 0);
    mip->IOBASE = 16;
    m = mirvar(0);            // 用 mirvar 初始化
    c = mirvar(0);
    // ... 後續運算
    // 記得釋放:mr_free(m); mr_free(c); mirkill(mip);
}

長期建議

MIRACL 現已更名為 **MIRACL Core**,支援 C99、C++11、WebAssembly。建議遷移至新版源碼,以 CMake 跨平台建置,避免舊版 Visual Studio 專案相容性問題。

VS2010 連結錯誤截圖

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