6

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

我正在尝试从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

有谁知道是什么导致了这些错误?

非常感谢!

4

1 回答 1

8

标题的相关部分是:

/* 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"
于 2014-07-20T18:36:00.370 回答