【问题标题】:Using ARPACK++ on Windows with Visual Studio在 Windows 上通过 Visual Studio 使用 ARPACK++
【发布时间】: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 似乎再次具有依赖关系,但没有提到它们。

【问题讨论】:

    标签: c++ linker


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 2016-01-26
      • 2010-12-19
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      相关资源
      最近更新 更多