核心问题:如果我无法从调用程序更改调用过程,我是否仍然可以将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“常用”语句,并且如果可以将函数和子例程放在“类”中...
答案 0 :(得分:0)
我认为答案是“你不能这样做”。据我所知,您显示的DLL是通过更改公共块中的变量将信息返回到主程序。但.NET没有那个。