回 帖 发 新 帖 刷新版面

主题:关于zhao311 的dll问题

这就是zhao311 的源程序以及F语言所生成的dll文件。
请大家看看,应改如何解决?

回复列表 (共1个回复)

沙发

这个DLL不是ActiveX DLL,所以不能使用引用的方法调用,只能用声明的方法调用里面的导出函数,里面一共有3个导出函数:
[code=c]Circle_area
SUM
_SUM@4[/code]

一运行总是“Run-time error '53':File not found: lianxi.dll”,可文件明明在当前目录下,然后查看DLL引入表,发现它引用了其它DLL:
[code=c]DFORRT.dll    0190    _OtsMoveMinimum
DFORRT.dll    018E    _OtsFill
DFORRT.dll    028F    for_len_trim
DFORRT.dll    018F    _OtsMove
MSVCRT.dll    009D    _adjust_fdiv
MSVCRT.dll    0055    __dllonexit
MSVCRT.dll    0186    _onexit
MSVCRT.dll    025E    free
MSVCRT.dll    0291    malloc
MSVCRT.dll    010F    _initterm
KERNEL32.dll    005D    DisableThreadLibraryCalls[/code]

然后去google这个文件:[url]http://www.dlldll.com/dforrt.dll_download.html[/url],下载回来放到当前目录下。

发现报“Run-time error '453':Can't find DLL entry point circle_area in lianxi.dll”,于是修正声明里的函数大小写:
[code=c]Private Declare Function Circle_area Lib "lianxi.dll" (r As Single) As Single
Private Declare Sub Makelower Lib "lianxi.dll" (ByVal s As String, ByVal i As Long)
Private Declare Function SUM Lib "lianxi.dll" (r As Long) As Long[/code]
以及楼主的拼写错误:
[code=c]Private Sub command1_click()
    Dim r As Single
    Dim a As Single
    r = Val(Text1.Text)
    a = Circle_area(r)
    Me.Caption = Str(a)
End Sub[/code]
程序就能正确运行了。

另外没在DLL输出表里看到有Makelower函数,估计楼主忘了写这个函数。

楼主的其它一大堆错误就不说了,自己修改吧。

[quote]1、工具-选项里勾选强制变量声明,即在每个模块自动加上Option Explicit,并去掉勾选请求时编译,这样楼主的一大堆错误在编译期就能马上发现,请参阅[url]http://bbs.pfan.cn/post-310513.html[/url];
2、API函数名是区分大小写的;
3、此处的“楼主”=“zhao311”[/quote]

我来回复

您尚未登录,请登录后再回复。点此登录或注册