最近在使用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)截图
步骤(3)截图
步骤(4)截图
步骤(5)截图