使用Visual Studio 2010在C ++中使用lapack C头的错误

时间:2014-07-20 18:13:16

标签: c++ c visual-studio-2010 lapack lapacke

请帮帮我!在互联网上查询需要几个小时,我还没有找到解决方案......

我正在尝试使用来自C++函数的call lapack函数,但是我在一开始就失败了。这是我的代码:

#include "stdafx.h"
#include "targetver.h"
extern "C" {
#include "lapacke.h"
}


int main{}
{
    return 0;
}

我知道“lapacke.h”是一个C头,所以我使用了extern "C"子句。但是当我尝试编译这个简单的函数时,我有以下错误:

Error   1   error C2146: syntax error : missing ';' before identifier 'lapack_make_complex_float'   c:\users\svd_example1\example2\example2\lapacke.h   89  1   example2
Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\users\svd_example1\example2\example2\lapacke.h   89  1   example2

有谁知道导致这些错误的原因?

非常感谢!

1 个答案:

答案 0 :(得分:6)

标题的相关部分是:

/* Complex types are structures equivalent to the
* Fortran complex types COMPLEX(4) and COMPLEX(8).
*
* One can also redefine the types with his own types
* for example by including in the code definitions like
*
* #define lapack_complex_float std::complex<float>
* #define lapack_complex_double std::complex<double>
*
* or define these types in the command line:
*
* -Dlapack_complex_float="std::complex<float>"
* -Dlapack_complex_double="std::complex<double>"
*/

/* Complex type (single precision) */
#ifndef lapack_complex_float
#include <complex.h>
#define lapack_complex_float    float _Complex
#endif

/* ... */    

lapack_complex_float lapack_make_complex_float( float re, float im );

默认使用C99 _Complex,Visual C ++不支持。您可以按照建议使用std::complex来定义这些宏,这些宏由Visual C ++支持:

#include <complex>
#define lapack_complex_float std::complex<float>
#define lapack_complex_double std::complex<double>
#include "lapacke.h"