我正在從C#調用fortran子例程。我有傳遞的參數是性格.i.e,在FORTRAN該參數被聲明爲我應該爲Fortran中的字符類型編組?
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
i沒有完成。
那麼最終爲你工作的是什麼? – 2010-03-04 04:21:06
@John,你的答案正在工作 – Graviton 2010-03-04 05:33:42
你是否需要使用'ref byte'? – 2010-03-04 06:09:20