wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了制作Fortran DLL并从C#调用它大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我在Fortran可执行文件中有一个函数,我需要把它变成一个dll文件,@R_250_9447@从C#程序中调用它的函数 FUNCTION TSAT11(p) C ** IGNORE IMPLEMENTATION ** TSAT11 = SX*TSAT2(X) + SXL1*TSAT3-273.15 RETURN END P是一个浮点数,函数返回一个浮点数 在这
我在Fortran可执行文件中有一个函数,我需要把它变成一个dll文件,@R_250_9447@从C#程序中调用它的函数
FUNCTION TSAT11(p) 
C     ** IGNORE IMPLEMENTATION **
      TSAT11 = SX*TSAT2(X) + SXL1*TSAT3-273.15 
      RETURN 
      END

P是一个浮点数,函数返回一个浮点数

在这里,我对fortran一无所知,也没有用C#调用dll,所以请再解释一下.

我正在使用COR_138_11845@paq Visual Fortran和C#2008.

感谢您的时间.

(如果你喜欢,你可以看到完整的代码Here [这是一个计算水和蒸汽属性的程序])

以下是使用单精度浮点数的示例.

Fortran库包含:

FUNCTION TSAT11(p) 
!DEC$ATTRIBUTES ALIAS:'TSAT11' :: TSAT11
!DEC$ATTRIBUTES DLLEXPORT :: TSAT11
!DEC$ATTRIBUTES VALUE :: P
REAL,INTENT(IN) :: P   
REAL :: TSAT11
    ! Examle calculation
    TSAT11 = P - 273.15
RETURN 
END FUNCTION

随着调用功能

class Program
{
    [DllImport("calc.dll")]
    static extern float TSAT11(float p);

    static void Main(String[] args)
    {
        float p = 300f;
        float t = TSAT11(p);
        // returns 26.8500061
    } 
 }

类似的数组(必须声明大小)

FUNCTION TSAT12(P,N) 
!DEC$ATTRIBUTES ALIAS:'TSAT12' :: TSAT12
!DEC$ATTRIBUTES DLLEXPORT :: TSAT12
!DEC$ATTRIBUTES VALUE :: N
IntegeR,INTENT(IN) :: N
REAL,INTENT(IN) :: P(N)
REAL :: TSAT12
    ! Examle calculation
    TSAT12 = SQRT( DOT_PRODUCT(P,p) )
RETURN 
END FUNCTION

调用C#代码

class Program
{
    [DllImport("calc.dll")]
    static extern float TSAT12(float[] P,int n);

    static void Main(String[] args)
    {
        float[] p2=new float[] { 0.5f,1.5f,3.5f };
        float t2=TSAT12(p2,p2.Length);
        //returns 3.84057283
    } 
 }

大佬总结

以上是大佬教程为你收集整理的制作Fortran DLL并从C#调用它全部内容,希望文章能够帮你解决制作Fortran DLL并从C#调用它所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。