制作Fortran DLL并从C#调用它
发布时间:2020-12-14 04:05:07 所属栏目:Windows 来源:网络整理
导读:我在Fortran可执行文件中有一个函数,我需要把它变成一个dll文件,所以我可以从C#程序中调用它的函数 FUNCTION TSAT11(P) C ** IGNORE IMPLEMENTATION ** TSAT11 = SX*TSAT2(X) + SXL1*TSAT3-273.15 RETURN END P是一个浮点数,函数返回一个浮点数 在这里,我对f
我在Fortran可执行文件中有一个函数,我需要把它变成一个dll文件,所以我可以从C#程序中调用它的函数
FUNCTION TSAT11(P) C ** IGNORE IMPLEMENTATION ** TSAT11 = SX*TSAT2(X) + SXL1*TSAT3-273.15 RETURN END P是一个浮点数,函数返回一个浮点数 在这里,我对fortran一无所知,也没有用C#调用dll,所以请再解释一下. 我正在使用Compaq 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 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- windows-mobile – 如何在Windows Mobile 6.0中将
- 为什么当我们获得实际的.dll实现时,我们还需要一
- windows-server-2008 – SSD上的系统驱动器;页面
- Windows命令“date%s”的等价物是什么
- Windows Phone 7上的Silverlight Web内容
- windows – 如何在gvim(win32)中缩进选择?
- windows-10 – 在IE而不是Edge中打开的本地Intra
- Windows 8上的Python 3.3上的NumPy
- windows – 在安装之前检测MSI是否需要重新启动
- windows – Cygwin启动错误/usr/bin/id:找不到组
热点阅读