2014-12-04 63 views
1

我想在我的mac上执行以下简单的C++代码在Qt环境中。我用这段代码想要的是使用LAPACK库进行简单的数学运算。我只是认为“积”功能来测试这种情况下,得到了在C++代码中包含LAPACK

和 “连接器的命令“找不到架构x86_64的符号”,退出代码1失败(使用-v看到调用)的错误。

顺便说一句,我敢肯定,我是在重复文件或头文件名可能会导致这些同样的错误。

任何人知道如何提前解决这个?谢谢。

#include <iostream> 
#include <vector> 
#include <Accelerate/Accelerate.h> 


extern "C" 
{ 
    double ddot_ (const int*, const double*, const int*, const double*, const int*); 
} 



int main() 
{ 
    std::vector<double> values(2, 1.); 


    int N = 2; 
    int one = 1; 

    double norm = ddot_(&N, &values[0], &one, &values[0], &one); 
    std::cout << "Hello world " <<norm << std::endl; 
    return 0; 

} 
+0

看起来像你没有链接LAPACK – 2014-12-04 12:36:56

+0

可能是,我对此很新,所以不太确定这是如何工作的。所以现在检查如何将LAPACK链接到C++,谢谢。 – Noname 2014-12-04 12:40:00

+0

找出连接这两个我应该使用“g ++ hola.cpp -o hola”commend编译代码。但目前我正在“只能在QML调试会话期间评估”错误。 – Noname 2014-12-04 12:42:46

回答

0

功能ddot_()是布拉斯图书馆的一部分。它不是Lapack图书馆的一部分。因此,使用ddot_()的程序应该链接到Blas库。举例来说,您发布的C++程序可以通过编译:

g++ main.cpp -o main -lblas 

提供#include <Accelerate/Accelerate.h>被注释掉。