私は 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]」など、残りの変数については...
どうすればこれを解決できますか?