私はこのことを2日間試してきましたが、うまくいきません。
私はこの男がしたのと同じことをやろうとしていました: -> fortran77 dll から c# に実際の値を返す
私は彼がしたようにすべてをしました。同じコンパイラーで同じパラメーターを使用してコンパイルした場合でも。
しかし、「保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。」エラー。
助けが必要!
これが私のC#コードです:
[DllImport("Lks.dll",
CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
public static extern void DON(
[MarshalAs(UnmanagedType.R8)] double DAA,
[MarshalAs(UnmanagedType.R8)] double DBB,
[MarshalAs(UnmanagedType.R8)] double DCC
);
static unsafe void Main(string[] args)
{
//double TIME = 100.0;
double DAA = 5.5;
double DBB = 7;
double DCC = 9;
//START( ENERIN, VAL1);
DON(DAA, DBB, DCC);
Console.Write("val1 = " + DAA);
Console.Write("val2 = " + DCC);
Debug.WriteLine("VAR = " + DBB.ToString());
Console.Write("Press any key to exit");
Console.ReadKey(false);
}
そして、ここに私のFORTRAN 77コードがあります:
*$pragma aux DON "DON" export parm(value*8, reference, reference)
SUBROUTINE DON(DAA,DBB,DCC)
REAL*8, DAA,DBB,DCC
DBB=DAA+1
DCC=DBB+1
RETURN
END
私にはすべてが同じように見えます。だから多分VS2010の問題だと思います。