主题:[讨论]VBA调用Fortran DLL找不到入口 的问题
大家好,我在VBA中调用Fortran 编译的DLL时,出现错误:提示找不到入口函数!
我检查了几遍代码,也没看出什么问题!这里专家高手云集,希望能指点一下!
下面是我的代码:
1 、Fortran DLL源码:
subroutine circle_area(radius,c_a)
!DEC$ ATTRIBUTES DLLEXPORT Alias "circle_area":: circle_area
!DEC$ ATTRIBUTES REFERENCE :: radius
!DEC$ ATTRIBUTES REFERENCE :: c_a
implicit none
real*4 :: radius
real*4 :: c_a
real, parameter :: PI = 3.14159
c_a = radius*radius*PI
! print*,c_a
return
end subroutine
2、VBA里代码
声明部分:
Option Explicit
Public Declare Sub circle_area Lib "I:\S2_yaqiji\test\Release\test.dll" (ByRef R As Single, ByRef A As Single)
调用部分:
Private Sub CommandButton4_Click()
Dim R As Single
Dim A As Single
R = 10
Call circle_area(R, A)
MsgBox "调用了Test.dll,在半径为10时,计算面积A=" & A
End Sub
4、在VBA里运行程序,出现如此的错误提示:
运行时错误'453’
找不到DLL输入点 circle_area ,在 I:\s2\.....\test.dll中!
附件里有fortran代码和调用dll的VBA窗体代码(运行窗体后点击TestDLL就可以调用本dll)
我检查了几遍代码,也没看出什么问题!这里专家高手云集,希望能指点一下!
下面是我的代码:
1 、Fortran DLL源码:
subroutine circle_area(radius,c_a)
!DEC$ ATTRIBUTES DLLEXPORT Alias "circle_area":: circle_area
!DEC$ ATTRIBUTES REFERENCE :: radius
!DEC$ ATTRIBUTES REFERENCE :: c_a
implicit none
real*4 :: radius
real*4 :: c_a
real, parameter :: PI = 3.14159
c_a = radius*radius*PI
! print*,c_a
return
end subroutine
2、VBA里代码
声明部分:
Option Explicit
Public Declare Sub circle_area Lib "I:\S2_yaqiji\test\Release\test.dll" (ByRef R As Single, ByRef A As Single)
调用部分:
Private Sub CommandButton4_Click()
Dim R As Single
Dim A As Single
R = 10
Call circle_area(R, A)
MsgBox "调用了Test.dll,在半径为10时,计算面积A=" & A
End Sub
4、在VBA里运行程序,出现如此的错误提示:
运行时错误'453’
找不到DLL输入点 circle_area ,在 I:\s2\.....\test.dll中!
附件里有fortran代码和调用dll的VBA窗体代码(运行窗体后点击TestDLL就可以调用本dll)