Я вызываю фортрановую подпрограмму из C #.Один из параметров, который я должен передать, это символ .ie, в Фортране этот параметр объявлен как
character, intent(in) :: bmat*1
Теперь проблема в коде C #, как мне его маршалировать?Я знаю, что для integer
я должен обозначить его как [MarshalAs(UnmanagedType.I4)]
, но как насчет character
?
Редактировать: Это мой код Fortran:
subroutine chartest(bmat)
!DEC$ ATTRIBUTES DLLEXPORT::chartest
!DEC$ ATTRIBUTES ALIAS:'chartest'::chartest
!DEC$ ATTRIBUTES VALUE ::bmat
character, intent(in) :: bmat*1
if(bmat .eq. 'G')then
print *, bmat
else
print *, ' no result '
endif
end
А это мой код взаимодействия:
[DllImport(@"eigensolver_win32.dll")]
public static extern void chartest( [MarshalAs(UnmanagedType.U1)] char bmat);
Вот как я называю подпрограмму:
char bmat = 'G';
EigenSolver32.chartest(bmat);
Результат, который я получил, был "нет результата", указывая, что if
не выполняется.