[英]errors using lapack C header in C++ with visual studio 2010
Please help me! 请帮我! It takes me hours to look up in the internet and I haven't found a solution.... 在互联网上查询需要几个小时,我还没有找到解决方案....
I am trying to use the call lapack function from C++
functions but I failed at the very beginning. 我试图使用C++
函数的调用lapack函数,但我在一开始就失败了。 Here is my code: 这是我的代码:
#include "stdafx.h"
#include "targetver.h"
extern "C" {
#include "lapacke.h"
}
int main{}
{
return 0;
}
I know "lapacke.h" is a C header so I use the extern "C"
clause. 我知道“lapacke.h”是一个C头,所以我使用extern "C"
子句。 But while I try to compile this trivial function, I have the following error: 但是当我尝试编译这个简单的函数时,我有以下错误:
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
Does anyone know what caused these errors? 有谁知道导致这些错误的原因?
Thank you very much! 非常感谢你!
The relevant portion of the header is: 标题的相关部分是:
/* 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 );
This uses C99 _Complex
by default, which Visual C++ doesn't support. 这默认使用C99 _Complex
,Visual C ++不支持。 You can define those macros as suggested to use std::complex
instead, which are supported by 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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.