
vb调用FORTRAN(编译器位Inter Visual Fortran)生成的DLL 提示找不到dll入口
我的整个过程如下:IVF:Newproject-->InterVisualFortran-->Library-->选DLL项目-->在sourcefile下添加f90代码...
我的整个过程如下:
IVF:
New project-->Inter Visual Fortran-->Library-->选DLL项目-->在source file 下添加f90代码如下:
SUBROUTINE ARRAYTEST(n,arr)
$ATTRIBUTES DLLEXPORT :: ARRAYTEST
INTEGER n,i,j
REAL(4) arr(3,3)
DO i=1,3
DO j=1,3
arr(i,j)=10.1*i+j
END DO
END DO
n=n+10
END SUBROUTINE
之后在选择release-->WIN32-->build
在release文件夹里出现如下文件:
下面是VB代码(两个文本框 一个命令按钮)
PrivateDeclare Sub ARRAYTEST Lib "C:\Users\YU\Documents\FORTRAN\exam\exam\Release\exam.dll" Alias "_ARRAYTEST@8"(X AS LONG,Y AS SINGLE)
PrivateSub Command1_Click()
Dim a AsLong
Dim ab(1To 3, 1 To 3) As Single
a=10
CallARRAYTEST(a,ab(1,1))
Text1.Text=Str(a)
Text2.Text=Str(ab(3,3))
End Sub
错误提示 找不到DLL入口点 _ARRAYTEST@8 in "文件路径"
有几个疑问:
网上查了一下说生成dll是会生成dll lib exp三个文件 我为什么没有生成exp文件?
2.我查阅文献实现上述过程的一般都是CVF编译器实现的,没有查阅到有IVF编译器实现的,但我生成的的确是WIN32的DLL,错误是否和编译器有关?
3.网上的一个版本说lib文件里会有DLL中函数的别名 即上述_ARRAYTEST@8,但是我记事本打开lib文件并没有看到,是否说明我生成的dll文件有问题?
求大家帮帮忙 谢谢大家了!!毕设要做不下去了!! 展开
IVF:
New project-->Inter Visual Fortran-->Library-->选DLL项目-->在source file 下添加f90代码如下:
SUBROUTINE ARRAYTEST(n,arr)
$ATTRIBUTES DLLEXPORT :: ARRAYTEST
INTEGER n,i,j
REAL(4) arr(3,3)
DO i=1,3
DO j=1,3
arr(i,j)=10.1*i+j
END DO
END DO
n=n+10
END SUBROUTINE
之后在选择release-->WIN32-->build
在release文件夹里出现如下文件:
下面是VB代码(两个文本框 一个命令按钮)
PrivateDeclare Sub ARRAYTEST Lib "C:\Users\YU\Documents\FORTRAN\exam\exam\Release\exam.dll" Alias "_ARRAYTEST@8"(X AS LONG,Y AS SINGLE)
PrivateSub Command1_Click()
Dim a AsLong
Dim ab(1To 3, 1 To 3) As Single
a=10
CallARRAYTEST(a,ab(1,1))
Text1.Text=Str(a)
Text2.Text=Str(ab(3,3))
End Sub
错误提示 找不到DLL入口点 _ARRAYTEST@8 in "文件路径"
有几个疑问:
网上查了一下说生成dll是会生成dll lib exp三个文件 我为什么没有生成exp文件?
2.我查阅文献实现上述过程的一般都是CVF编译器实现的,没有查阅到有IVF编译器实现的,但我生成的的确是WIN32的DLL,错误是否和编译器有关?
3.网上的一个版本说lib文件里会有DLL中函数的别名 即上述_ARRAYTEST@8,但是我记事本打开lib文件并没有看到,是否说明我生成的dll文件有问题?
求大家帮帮忙 谢谢大家了!!毕设要做不下去了!! 展开
展开全部
Fortran代码里
$ATTRIBUTES DLLEXPORT :: ARRAYTEST
应该是
!$DEC ATTRIBUTES DLLEXPORT :: ARRAYTEST只需要 DLL 既可。lib,exp别管。
如果你想知道自己生成的DLL是否导出了ARRAYTEST,或者是 _ARRAYTEST@8,请使用 Dependency Walker 打开 DLL 既可看到。
更多追问追答
追答
试试改为
!DEC$ ATTRIBUTES DLLEXPORT, ALIAS:'ARRAYTEST' :: ARRAYTEST
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询