2

核となる質問:呼び出し元のプログラムから呼び出し元のプロシージャを変更できない場合でも、DLL の元のソース コードを Fortran 77 から VB.Net に変換できますか? つまり、VB.NET で記述された DLL を、そのソース コードが最初に Fortran 77 で記述されたものと同じように動作させることは可能ですか?

文字列で問題が発生することはわかっています。しかし、私のプロシージャはどれも文字列の入力/出力を持たず、4 バイトの整数と 8 バイトの double だけです。

Fortran 77 で最初に記述された DLL を変更する必要があります。将来の変更を容易にするために、DLL ソース コードを Fortran から VB.Net に変換したいと考えています。DLL を呼び出すプログラムを変更することはできません。また、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

基本的な論理ステートメントであるため、[ここに戻りのあるコード] は正しいと確信しています。ただし、Fortran の「共通」ステートメントを正しく処理しているかどうか、および「クラス」内に関数とサブルーチンを配置しても問題ないかどうかはわかりません...

4

1 に答える 1