2

バックグラウンド

LAPACK ライブラリの zgeev ルーチンを使用して、複素行列の固有値を見つけようとしています。私が理解している限りでは、LAPACK は FORTRAN 用に作成されているため、C (または C++) プログラムで使用するには、マトリックスを変換したり、ルーチン名にアンダースコアを追加したりするなど、いくつかの変更を加える必要があります (参照: http:/ /www.physics.orst.edu/~rubin/nacphy/lapack/codes/eigen-c.html )

問題

LAPACK ライブラリを C++ プログラムにリンクするには ( http://www.physics.orst.edu/~rubin/nacphy/lapack/codes/eigen-c.html )

Windows 7ラップトップのcygwinでg ++でコンパイルします。次のコマンドを使用しています:

$ g++ eigen_complex.cpp -L G:\cygwin_root_dir\lib -lliblapack.a -llibblas.a

次の結果が得られます。

eigen_complex.cpp: In function `int main()':
eigen_complex.cpp:41: error: `zgeev_' undeclared (first use this function)
eigen_complex.cpp:41: error: (Each undeclared identifier is reported only once for each function it appears in.)

このエラーの原因がわかりません。ライブラリの名前を liblapack から lapack などに変更しても (「lapa」など)、エラーに違いはありません。次のコンパイル コマンドは、上記と同じ結果を返します。

g++ eigen_complex.cpp -L G:\cygwin_root_dir\lib -llapack.a -lblas.a
g++ eigen_complex.cpp -L G:\cygwin_root_dir\lib -llapack -lblas
g++ eigen_complex.cpp -L G:\cygwin_root_dir\lib -lliblapack -llibblas
g++ eigen_complex.cpp -lliblapack -llibblas

g++ eigen_complex.cpp -lliblapack -lxyz

また。xyz という名前のライブラリはなく、コンパイラはそれについて警告を発していないと思います。

どんな助けでも大歓迎です。

4

1 に答える 1