我有一個用C/C++編寫的庫,它的開發者聲明有一個Fortran接口。該界面將被啓用,包括一個頭文件* .h並調用一個經典的子程序。我想編譯我的Fortran程序鏈接該庫。 該庫已經過測試,並且可以正常工作。在Fortran子程序中包含一個c/C++頭文件
這主程序:
! 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]「等等其餘的變量...
我該如何解決這個問題?
'MPI_INTEGER4','MPI_REAL8'等[在MPI標準中](http://www.mcs.anl.gov/research/projects/mpi/mpi-standard/mpi-report-1.1/node32.htm )作爲可選類型。他們顯然很可怕,但有時候他們會看到他們。 –