fortran を使用して C 関数を呼び出そうとしています (プロジェクトにはこれが必要です)。そのため、最初は、fortran を介してパラメーター化されていない void 関数を単純に呼び出そうとしました。
指定されたコードで次のエラーを解決するのを手伝ってください。
行列乗算の C コード:
#include <stdio.h>
extern "C"
{ void __stdcall mat();
}
void mat()
{
int m, n, p, q, c, d, k, sum = 0;
printf("Enter the number of rows and columns of first matrix\n");
scanf("%d%d", &m, &n);
int first[m][n];
printf("Enter the elements of first matrix\n");
for ( c = 0 ; c < m ; c++ )
for ( d = 0 ; d < n ; d++ )
scanf("%d", &first[c][d]);
printf("Enter the number of rows and columns of second matrix\n");
scanf("%d%d", &p, &q);
int second[p][q];
if ( n != p )
printf("Matrices with entered orders can't be multiplied with each other.\n");
else
{
printf("Enter the elements of second matrix\n");
for ( c = 0 ; c < p ; c++ )
for ( d = 0 ; d < q ; d++ )
scanf("%d", &second[c][d]);
int multiply[m][q];
for ( c = 0 ; c < m ; c++ )
{
for ( d = 0 ; d < q ; d++ )
{
for ( k = 0 ; k < p ; k++ )
{
sum = sum + first[c][k]*second[k][d];
}
multiply[c][d] = sum;
sum = 0;
}
}
printf("Product of entered matrices:-\n");
for ( c = 0 ; c < m ; c++ )
{
for ( d = 0 ; d < q ; d++ )
printf("%d\t", multiply[c][d]);
printf("\n");
}
}
}
int main()
{
mat();
return 0;
}
また、私が書いた fortran から関数 mat を呼び出すコードは次のとおりです。
program mat_mult !This is a main program.
call mat()
stop
end
Cファイルを実行すると、次のエラーが発生します。
matrix_mult.c:5: エラー: 文字列定数の前に識別子または '(' が必要です
F77 コンパイラを使用して fortran ファイルを実行すると、次のエラーが発生します。
/tmp/ccQAveKc.o: 関数MAIN__':
matrix_mult.f:(.text+0x19): undefined reference to
mat_' collect2: ld が 1 つの終了ステータスを返しました
エラー/正しいコードを特定するのを手伝ってください。ありがとうございました。