1

in my quest to solve eigenvector problems of symmetric, real matrices quickly (I only need the first N eigenvalues and vectors, where "first" refers to the one with largest (real) value), I'm trying to get ARPack++ running on Windows. I use MSVS 2010 for development.

I'm currently in linker hell. I'm also not a 99 years C++ professional who eats bits for breakfast.

First, ARPACK++ is a header-only library, that's good! It depends on ARPACK, and ARPACK again has required dependencies on BLAS and LAPACK. Luckily, for windows users, the .lib and .dll files are available for BLAS, LAPACK and ARPACK, and ARPACK++ has been patched such that it works with modern compilers (and includes some bug-fixes).

As it seems, ARPACK++ introduces the required dependency to the SuperLU library. This is because, in my case I need to use the

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

class/CTOR, which has "lu" in its name, and I do indeed get missing symbols. The next thing I tried was to grab the SuperLU library from around that time (2000ish), which is SuperLU 2.0. This one can be compiled using MSVS2010 directly (compared to ARPACK for example which has to be compiled with MinGW/MSys, unless you pay for Intel's FORTRAN compilers). I included the static superlu2.lib I created, but it seems SuperLU itself has methods that are just declared but not implemented, particularly

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

in cgstrs.c. Now I'm stuck and don't know how to continue :/ It seems like SuperLU has dependencies again, but they're not mentioned.

4

1 回答 1

0

事实证明,我忘记做的只是将 SuperLU 的“src”中的所有 .c 和 .h 文件添加到 VS 项目中,而且还添加了“cblas”目录中的文件。因此,所有依赖关系都得到了解决。

于 2012-06-17T15:02:48.953 回答