【发布时间】:2012-06-17 23:02:48
【问题描述】:
在我的quest 中,为了快速解决对称实矩阵的特征向量问题(我只需要前 N 个特征值和向量,其中“第一个”是指具有最大(实)值的那个),我正在尝试让 ARPack++ 在 Windows 上运行。我使用 MSVS 2010 进行开发。
我目前处于链接器地狱。我也不是 99 年的 C++ 专业人士,早餐吃点东西。
首先,ARPACK++ 是一个只有头文件的库,这很好!它依赖于 ARPACK,而 ARPACK 又需要依赖于 BLAS 和 LAPACK。幸运的是,对于 Windows 用户,BLAS、LAPACK 和 ARPACK 和 ARPACK++ 的 .lib 和 .dll 文件 are available 一直是 patched,因此它可以与现代编译器一起使用(并包含一些错误修复)。
看起来,ARPACK++ 为 SuperLU 库引入了 required 依赖项。这是因为,就我而言,我需要使用
ARluSymStdEig<ARFLOAT> prob(nev, matrix, which, ncv, tol,
maxit, resid, AutoShift);
class/CTOR,其名称中有“lu”,我确实缺少符号。 我尝试的下一件事是从那个时候(2000 年左右)获取 SuperLU 库,即 SuperLU 2.0。这个可以直接使用 MSVS2010 编译(相比之下,例如必须使用 MinGW/MSys 编译的 ARPACK,除非您为英特尔的 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 似乎再次具有依赖关系,但没有提到它们。
【问题讨论】: