将实际值从 fortran77 dll 返回到 c#

2024-02-19

有人可以指出我在这里做错了什么吗?

FORTRAN 77 dll 代码

*$pragma aux DON "DON" export parm(value*8,value*8)


      SUBROUTINE DON(DAA,DBB,DCC)
      REAL*8, DAA,DBB,DCC
      DBB=DAA+1
      DCC=DBB+1 
      RETURN
      END

C# code

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

using System.Diagnostics;

namespace pDON
{
    class Program
    {

        [DllImport("DON.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 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 = " + DBB);
            Console.Write("val2 = " + DCC);
            Debug.WriteLine("VAR = " + DBB.ToString());
            Console.Write("Press any key to exit");
            Console.ReadKey(false);
        }

    }
}

我想将 DBB DCC 的值返回到 C# 主程序..在通过 FORTRAN 77 子例程处理它们之后。

附: :我无法使用 INTENT(out),因为我使用的是 Fortran 77。 非常感谢。


谢谢大家的建议

输入参数应按值传递,输出参数应按引用传递 所以我将辅助编译指示更改为 ""*$pragma aux DON "DON" 导出参数(值*8, 参考, 参考)"" 现在正在工作

再次感谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将实际值从 fortran77 dll 返回到 c# 的相关文章

随机推荐