将Fortran DLL转换为VB.NET DLL

时间:2013-08-20 18:27:28

标签: vb.net dll fortran fortran77

核心问题:如果我无法从调用程序更改调用过程,我是否仍然可以将DLL的原始源代码从Fortran 77转换为VB.Net?即,是否有可能使用VB.NET编写的DLL与其源代码最初用Fortran 77编写的DLL相同?

我知道我会遇到字符串问题。但我的程序都不会有字符串的输入/输出,只有4字节整数和8字节双精度。

我必须修改最初在Fortran 77中编写的DLL。为了使将来的更改更容易,我想将DLL源代码从Fortran转换为VB.Net。我不能修改调用DLL的程序,我没有调用DLL的程序的代码,所以我不知道它是如何调用它的。首先,我正在尝试做什么?我认为这是因为DLL是一个DLL而不管源语言,不是吗?这就是我所在的地方:

Fortran源代码如下所示:

    subroutine init(dwid)

    use dfport
    implicit none
    common /fltcmn/ ifirst, icnt
    integer ifirst, icnt
    integer(4) dwid
    external fndndx
cDEC$ ATTRIBUTES C, REFERENCE, DLLEXPORT, ALIAS:'_INIT' :: INIT

    [code in here w/ return]

    end subroutine init


    function fndndx(dwid)

    use dfport
    implicit none
    common /fltcmn/ ifirst, icnt
    integer ifirst, icnt, fndndx
    integer(4) dwid

    [code in here w/ return]

    end function fndndx

现在跟着我试图翻译它(现在它没有用)

    Public Class Class1
        Public ifirst as Integer
        Public icnt as Integer

        Sub init(ByVal dwid as Integer)

            [Code in here w/ return]

        End Sub

        Function fndndx(ByVal dwid as Integer) as Integer

            [Code in here w/ return]

        End Function

    End Class

我非常有信心[这里的代码w / return]是正确的,因为它是基本的逻辑语句。但是,我不确定的是,我是否正确处理Fortran“常用”语句,并且如果可以将函数和子例程放在“类”中...

1 个答案:

答案 0 :(得分:0)

我认为答案是“你不能这样做”。据我所知,您显示的DLL是通过更改公共块中的变量将信息返回到主程序。但.NET没有那个。