#include "stdafx.h"
#include <iostream>using namespace std;#include "f2c.h"
extern "C"
{
#include "clapack.h"
}
int _tmain(int argc, _TCHAR* argv[])
{
integer N=3 ;
doublereal a[3][3]=
{
{1,1,1},
{1,1,1},
{1,1,1}
};
integer lda;
integer INFO;
doublereal *work;
integer lwork;
lda=N;
lwork=N;
work=(doublereal *)new doublereal[N];
integer *ipiv;
ipiv = (integer *)new integer[N];
dgetrf_(&N, &N, a, &lda, ipiv, &INFO);
if (INFO!=0)
return 0;
dgetri_(&N, a, &lda, ipiv, work, &lwork, &INFO);
delete ipiv;
delete work;
return(INFO==0);
}
问题如下:
1>d:\try\try\try\try.cpp(35) : error C2664: 'dgetrf_' : cannot convert parameter 3 from 'doublereal [3][3]' to 'doublereal *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
#include <iostream>using namespace std;#include "f2c.h"
extern "C"
{
#include "clapack.h"
}
int _tmain(int argc, _TCHAR* argv[])
{
integer N=3 ;
doublereal a[3][3]=
{
{1,1,1},
{1,1,1},
{1,1,1}
};
integer lda;
integer INFO;
doublereal *work;
integer lwork;
lda=N;
lwork=N;
work=(doublereal *)new doublereal[N];
integer *ipiv;
ipiv = (integer *)new integer[N];
dgetrf_(&N, &N, a, &lda, ipiv, &INFO);
if (INFO!=0)
return 0;
dgetri_(&N, a, &lda, ipiv, work, &lwork, &INFO);
delete ipiv;
delete work;
return(INFO==0);
}
问题如下:
1>d:\try\try\try\try.cpp(35) : error C2664: 'dgetrf_' : cannot convert parameter 3 from 'doublereal [3][3]' to 'doublereal *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
//将第3个参数强制转换为doublereal*, (doublereal*)a
doublereal aa=reinterpret_cast<doublereal>(aa);
这个也不行~~~
error C2040: 'aa' : 'doublereal' differs in levels of indirection from 'real [3][3]'
error C2440: 'reinterpret_cast' : cannot convert from 'real [3][3]' to 'doublereal'