我有一个用 C/C++ 编写的库,它的开发人员声明它具有 Fortran 接口。该接口将被启用,包括一个头文件 *.h 并调用一个经典子例程。我想编译我的 Fortran 程序也链接那个库。该库已经过测试并且可以正常工作。
这是主程序:
! Main program
INCLUDE 'pastix_fortran.h'
Program TEST
IMPLICIT NONE
call GO_PASTIX
END PROGRAM TEST
例程 GO_PASTIX 是
SUBROUTINE GO_PASTIX
IMPLICIT NONE
pastix_data_ptr_t :: pastix_data
integer :: pastix_comm
pastix_int_t :: n, rhs, ia(NCOLS+1), ja(NNZER)
pastix_float_t :: avals(NNZER), b(NROWS)
pastix_int_t :: perm(NROWS), invp(NROWS), iparm(64)
real*8 :: dparm(64)
call pastix_fortran(pastix_data,pastix_comm,n,ia,ja,avals,perm,invp,b,rhs,iparm,dparm)
END SUBROUTINE
而在文件 pastix_fortran.h 中定义了子程序中使用的变量类型:
#define PASTIX_INT_KIND 4
#define pastix_int_t INTEGER(kind=4)
#define pastix_uint_t unsigned INTEGER(kind=4)
#define pastix_data_ptr_t INTEGER(kind=4)
#define MPI_PASTIX_INT MPI_INTEGER4
#define pastix_float_t REAL(kind=8)
#define MPI_PASTIX_FLOAT MPI_REAL8
使用 VS2010,我添加了使用 /fpp 预处理文件的选项,并且我没有忘记添加所有包含目录和文件。但是编译器说:
对于标题行:“警告 1 警告 #5117:错误 # 预处理器行”
对于 fortran 子例程:“错误 #6404:此名称没有类型,并且必须具有显式类型。[PASTIX_DATA_PTR_T]”等等其余变量...
我怎样才能解决这个问题?