在Windows上使用ARPACK++和Visual Studio

Using ARPACK++ on Windows with Visual Studio

本文关键字:Visual Studio ARPACK++ Windows      更新时间:2023-10-16

为了快速解决对称实矩阵的特征向量问题(我只需要前N个特征值和向量,其中"第一个"是指具有最大(实)值的那个),我正在尝试让ARPack++在Windows上运行。我使用 MSVS 2010 进行开发。

我目前在链接器地狱。我也不是一个99岁的专业人士,早餐吃点东西C++。

首先,ARPACK++是一个仅标题库,这很好!它依赖于ARPACK,ARPACK再次依赖于BLAS和LAPACK。幸运的是,对于Windows用户来说,.lib和.dll文件可用于BLAS,LAPACK和ARPACK,并且ARPACK++已经修补,以便它可以与现代编译器一起使用(并包括一些错误修复)。

看起来,ARPACK++为SuperLU库引入了所需的依赖项。这是因为,就我而言,我需要使用

ARluSymStdEig<ARFLOAT> prob(nev, matrix, which, ncv, tol,
                          maxit, resid, AutoShift);

class/CTOR,它的名字中有"lu",我确实缺少符号。接下来我尝试的是获取当时(2000年左右)的SuperLU库,即SuperLU 2.0。这个可以直接使用MSVS2010编译(例如,与ARPACK相比,ARPACK必须使用MinGW/MSys编译,除非您为英特尔的FORTRAN编译器付费)。我包含了我创建的静态superlu2.lib,但似乎SuperLU本身具有刚刚声明但未实现的方法,特别是

void cusolve(int, int, complex*, complex*);
void clsolve(int, int, complex*, complex*);
void cmatvec(int, int, int, complex*, complex*, complex*);

CGSTRS.c.现在我被困住了,不知道如何继续:/似乎 SuperLU 又有了依赖项,但没有提到它们。

事实证明,

我忘记做的不仅是将SuperLU的"src"中的所有.c和.h文件添加到VS项目中,而且还要添加"cblas"目录中的文件。这样就解决了所有依赖关系。