将字符数组的数组从c#传递给Fortran

本文关键字:数组 Fortran 字符 | 更新日期: 2023-09-27 18:03:43

我正在尝试调用以下FORTRAN方法:

subroutine MYMETHOD(THEARRAY)
带有参数 的

CHARACTER*200  :: THEARRAY(2)

这看起来很简单,但我遇到了麻烦,因为它是字符数组数组。为此,我尝试了几种方法,包括封送处理(由于存在多个字符串,因此会遇到问题)。我能想到的最好的是:

[DllImport("theFortranDLL.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void MYMETHOD(THEARRAY);
static void Main(string[] args)
{
    StringBuilder[] theArray = new StringBuilder[2];
    theArray[0] = new StringBuilder("DataA",200);
    theArray[1] = new StringBuilder("DataB",200);
    MYMETHOD(theArray);
}

然而,这不起作用。我如何从c#中调用这样的方法?谢谢!

将字符数组的数组从c#传递给Fortran

在Fortran中,CHARACTER*200 :: THEARRAY(2)不是数组的数组。它是一个长度为200的标量字符串的双元素数组。在其他语言中,它可能是数组的数组。每个Fortran字符串的末尾都用空白填充。我不知道c#是如何处理字符串的…C语言以空字符结束字符串。对于Fortran, null字符必须用空格替换,直到位置200。