最近在使用SuperLU進行非線性方程求解(Ax=b),由于習慣在windows下的進行代碼開發,是以簡單介紹下SuperLU在vs2019版本的安裝過程。
在vs2019版本安裝的時候老是出錯,這裡分享一些解決方法。
下載下傳SuperLU,官方網站:https://portal.nersc.gov/project/sparse/superlu/#superlu
下載下傳串行版本,放在:F:\superLU\superlu-5.2.2
SuperLU安裝與使用一般可分為兩個步驟:1.生成靜态連結庫,2.在Vs2019中配置使用,下面詳細說明
一. 靜态連結庫生成,需要生成SuperLU.lib和BLAS.lib (很多已經說的很詳細了:https://www.xuebuyuan.com/1707596.html )
1. 生成SuperLU.lib
(1) 首先在vs2019下建立工程,命名為SuperLU
(2) 把 F:\superLU\superlu-5.2.2\SRC 檔案夾下所有檔案拷貝到建立的工程下,然後 項目名稱--右鍵--添加--現有項,添加所有檔案
(3)項目名稱--右鍵--屬性--配置屬性--配置類型(改為 靜态庫.lib),注意上面的平台改為x64 (平台和版本需要一一對應,這裡選擇Debug和x64)
(4) 将檔案夾 F:\superLU\superlu-5.2.2\SRC 添加到 屬性->C/C++->正常->附加包含目錄,并點選應用和确定
(5) 然後點選 生成---生成解決方案,(直接運作也可以,因為是生成靜态庫,沒有入口,運作會出現無法啟動程式...,但依然會生成lib)
在vs2019下會出現很多錯誤,常見的兩個, 'sprintf': This function or variable may be unsafe ... , AA值為初始化...
解決方案:屬性--C/C++--正常--SDL檢查,設定為否 (vs2010不會有這些問題)
這樣就生成了SuperLU.lib,路徑在 **\SuperLU\x64\debug 下
2. 生成BLAS.lib (生成方式與SuperLU.lib相同)
(1) 首先在vs2019下建立工程,命名為BLAS
(2) 把 F:\superLU\superlu-5.2.2\CBLAS檔案夾下所有檔案拷貝到建立的工程下,然後 項目名稱--右鍵--添加--現有項,添加所有檔案
(3)項目名稱--右鍵--屬性--配置屬性--配置類型(改為 靜态庫.lib),注意上面的平台改為x64 (平台和版本需要一一對應)
(4) 将檔案夾 F:\superLU\superlu-5.2.2\CBLAS 添加到 屬性->C/C++->正常->附加包含目錄,并點選應用和确定
(5) 然後點選 生成---生成解決方案,遇到問題同上
這樣就生成了SuperLU.lib,路徑在 **\BLAS\x64\debug 下
二、在Vs2019中配置使用
(1) 在vs2019下建立工程,命名test,建立a.cpp檔案,這裡測試SuperLU自帶的例子(例子路徑:F:\superLU\superlu-5.2.2\EXAMPLE\superlu.c,将其内容拷貝到a.cpp,平台需對應Debug和x64)
(2) 右鍵--屬性--C/C++--附加包含目錄(F:\superLU\superlu-5.2.2\SRC), 屬性--C/C++--正常--SDL檢查,設定為否(否則會出現 'sprintf':... 等錯誤)
(3) 屬性--連結器--正常--附加庫目錄 (**\SuperLU\x64\debug和**\BLAS\x64\debug )
// 注:怕每次建立工程配置麻煩的,可将x64\debug下的SuperLU.lib和BLAS.lib拷貝到一個單獨檔案夾下,比如我将兩個.lib拷貝到:F\ku\deg64檔案夾下。
// 也可以直接項目名稱--右鍵--添加--現有項--SuperLU.lib和BLAS.lib
(4) 屬性--連結器--輸入--附加依賴項--加入SuperLU.lib和BLAS.lib
(5) 直接運作,Vs2019下出現很多錯誤:例如:const char* 類型的實參與 char*類型的實參不相容.... (Vs2010不會有這些問題)
解決方案:屬性--C/C++--語言--符合模式 點否 這樣就不會再出錯了。
步驟(2)截圖
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9EFVPdXWq5ENNRVT3V1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0AjM3IDMzEjMwIzMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
步驟(3)截圖
步驟(4)截圖
步驟(5)截圖