核心问题:如果我不能从调用程序中改变调用程序,我还能将一个DLL的原始源代码从Fortran 77翻译成VB.Net吗?即,是否可以使用 VB.NET 编写的 DLL 的行为与其最初用 Fortran 77 编写的源代码相同?
我知道我会遇到字符串问题。但我的程序都没有字符串的输入/输出,只有 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
我非常有信心 [code in here w/return] 是正确的,因为它是基本的逻辑语句。但是,我不确定我是否正确处理了 Fortran“通用”语句,以及是否可以在“类”中包含函数和子例程......