将LAPACK库与gg上的g ++链接起来

时间:2012-12-15 10:32:40

标签: g++ cygwin lapack

背景

我试图通过在LAPACK库中使用zgeev例程来找到复杂矩阵的特征值。据我所知,LAPACK是为FORTRAN编写的,因此要将它与C(或C ++)程序一起使用,必须进行一些修改,例如转换矩阵并在例程名称中附加下划线(REFERENCE:{{3 }})

问题

将LAPACK库链接到C ++程序(http://www.physics.orst.edu/~rubin/nacphy/lapack/codes/eigen-c.html

在我的Windows 7笔记本电脑上使用g ++在cygwin上编译它,我使用以下命令:

$ 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的库,编译器也没有给出任何警告。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

希望在项目的某个地方添加此原型应解决它:

extern "C" void zgeev_(char*, char*,int*,double *, int*, struct complex [], struct complex [1][1], int*, struct complex [1][1], int*, struct complex [], int*, struct complex [], int*);