我试图调用以下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#调用这样的方法?谢谢!
答案 0 :(得分:1)
在Fortran中,CHARACTER*200 :: THEARRAY(2)
不是数组数组。它是长度为200的缩放器字符串的两个元素数组。在其他语言中,它可能是一个数组数组。每个Fortran字符串在末尾用空格填充。我不知道C#如何处理字符串... C终止带有空字符的字符串。对于Fortran,该空字符必须用空格替换,一直到位置200。