使用Cygwin 64位和C ++代码的Lapack

时间:2018-04-17 13:26:31

标签: c++ cygwin static-linking lapack

我想学习如何在Windows中将lapack与C / C ++代码一起使用。我是一个C / C ++编程新手,所以我知道如何在C中编码,如何组织h / c文件中的代码,以及如何在cygwin / MinWG / VS下使用gcc编译它们。我完全不熟悉的是使用外部库,例如lapack。

要了解如何将其与Cygwin(64位)一起使用,我按照此处指示的步骤进行了

http://matrixprogramming.rudnyi.ru/2011/04/using-lapack-from-c/

这似乎是成功的,并在$ HOME \ lapack-3.3.0

文件夹中创建了lapack的内置版本

现在我想重新运行这个例子:main.cc

我所做的是尝试通过调用

来编译它
    $ g++ -O3 main.cc -L$HOME/lapack-3.3.0 -llapack -lblas -lgfortran -I ./include -o main

我得到的是

    main.cc: In function ‘int main(int, char**)’:
    main.cc:39:23: error: ‘dgetf2’ was not declared in this scope
    info = dgetf2(A, ipvt);
                   ^
    main.cc:45:23: error: ‘dgetrf’ was not declared in this scope
    info = dgetrf(A, ipvt);
                   ^
    main.cc:55:26: error: ‘dgetrs’ was not declared in this scope
    info = dgetrs(A, B, ipvt);
                      ^

其中“include”文件夹仅包含            Matrix.h main.cc中需要的矩阵类

对我来说,似乎缺少一些头文件。我不明白的是,如果图书馆的建设过程成功,这是怎么可能的。我是否需要进一步提供“-I选项”?我在lapack-3.3.0文件夹中查找了“dgetf2”,“dgetrf”和“dgetrs”,所以我在$ HOME \ lapack-3.3.0 \ SRC中找到了目标文件但是如果我将它们包括在内以及

  $ g++ -O3 main.cc -L$HOME/lapack-3.3.0 -llapack -lblas -lgfortran -I ./include -I $HOME/lapack-3.3.0/SRC -o main

我得到了完全相同的错误,因为它们是目标文件而不是头文件。我究竟做错了什么?如何管理在外部库中实现的函数声明?

谢谢!

0 个答案:

没有答案