0

次の 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# からそのようなメソッドを呼び出すにはどうすればよいですか? ありがとう!

4

1 に答える 1

1

Fortran ではCHARACTER*200 :: THEARRAY(2)、配列の配列ではありません。これは、長さ 200 のスケーラー文字列の 2 要素配列です。他の言語では、配列の配列である可能性があります。各 Fortran 文字列は、最後に空白が埋め込まれます。C# が文字列をどのように処理するのかわかりません... C は文字列をヌル文字で終了します。Fortran の場合、そのヌル文字は 200 桁目まで空白に置き換える必要があります。

于 2013-03-14T06:01:45.257 に答える