Tag: fortran

Fortranfunction说明

我在Fortran中有这个function,我试图用C#重新编码它 C **************************************************************** C FUNCTION POLY C***************************************************************** FUNCTION POLY(N,A,X) DIMENSION A(N) C POLY = 0. L = N DO 1 K = 1,N POLY = POLY*X + A(L) 1 L = L-1 RETURN END C***************************************************************** 我发现DIMENSION A(N)创建了一个N值向量,但是我们已经从函数参数中得到了一个变量A ,这是否意味着数组值都等于A ? 如果是,那么A(N)的用途是什么。 顺便说一句,任何人都可以解释这个function是做什么的,所以我可以在C#中重新实现它

使用Fortran DLL进行NUnit测试

我有一个来自Fortran的ServerCom DLL。 我使用tlbimp自动生成一个来自ServerCom.dll的MyFortran.dll,可以直接从C#引用。 在C#类库中,我引用了MyFortran.dll。 我创建了一个使用MyFortran.dll并生成正确清单的控制台应用程序(为了拥有一个自由交互的COM环境)。 它在控制台应用程序中完美运行。 现在,我写了一个简单的NUnit测试,我得到了一个COMexception。 System.Runtime.InteropServices.COMException:由于以下错误,检索具有CLSID {0FB0F699-4EF8-4732-B98E-C088825E3912}的组件的COM类工厂失败:80040154未注册类(HRESULTexception:0x80040154(REGDB_E_CLASSNOTREG))。 我怎么解决这个问题? 谢谢,阿德里安。

如何使用CHARACTER * 50类型的参数将参数从C#传递给FORTRAN?

我有以下FORTRAN: SUBROUTINE MYSUB(MYPARAM) !DEC$ ATTRIBUTES DLLEXPORT::SetPaths CHARACTER*50 MYPARAM WRITE(6, *) MYPARAM END SUBROUTINE 然后我在C#中有以下内容 class Program { static void Main(string[] args) { StringBuilder sb = new StringBuilder(50); sb.Append(@”something”); MYSUB(sb); Console.ReadLine(); } [DllImport(@”myCode.dll”, EntryPoint = “MYSUB”)] public static extern void MYSUB(StringBuilder input); } 然而,我的FORTRAN中的WRITE在“某事”之后显示了一堆垃圾。 看起来字符串终止符没有被尊重。 救命!

键入编组以从C#调用fortran子例程

我正在尝试使用P / invoke从C#代码调用FORTRAN77子例程 – 如果您感兴趣,我正在尝试包装ARPACK库提供的一些function( http://www.caam.rice。教育/软件/ ARPACK )。 我有两个问题。 首先,在这种情况下,我无法找到关于类型编组的任何地方的明确指示。 更具体地说,这是在我的FORTRAN子例程中声明的类型: subroutine getEigenVectors & ( Matrix, n, which, nev, ncv, maxn, maxnev, maxncv, ldv, v, d) c %——————% c | Scalar Arguments | c %——————% character which*2 integer n, nev, maxn, maxnev, maxncv, ldv c %—————–% c | Array Arguments | c %—————–% c Real […]

从C#调用FORTRAN dll并将值分配给结构数组

我可以将一个C#结构传递给FORTRAN就好了。 我甚至可以在FORTRAN传递一个C#结构数组作为TYPE()数组。 我遇到麻烦的地方是当我试图将值返回到C# 。 这是一个例子: fortran dll是: MODULE TESTING TYPE VALUEREF INTEGER*4 :: A ENDTYPE VALUEREF CONTAINS SUBROUTINE TEST_REF(T,N) !DEC$ ATTRIBUTES DLLEXPORT :: TEST_REF !DEC$ ATTRIBUTES ALIAS:’TEST_REF’ :: TEST_REF !DEC$ ATTRIBUTES VALUE :: N IMPLICIT NONE INTEGER*4 :: A,I,N TYPE(VALUEREF) :: T(N) A = 100 DO I=1,N T(I)%A = A + I END DO END […]

制作Fortran DLL并从C#调用它

我在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。 感谢您的时间。 (如果你愿意,你可以看到完整的代码在这里 [这是一个计算水和蒸汽属性的程序])