找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 6313|回复: 4

请教VB 标准DLL 问题

  [复制链接]

76

主题

375

回帖

0

精华

铜牌会员

积分
231
发表于 2009-8-24 11:14:35 | 显示全部楼层 |阅读模式
  1. Option Explicit

  2. Private Declare Function SetHandleCount Lib "Kernel32" _
  3.         (ByVal a As String) As Long

  4. Private Declare Function SetHandleCount1 Lib "Kernel32" _
  5.         Alias "SetHandleCount" (ByVal a As Long) As String

  6. Private Declare Function RtlMoveMemory Lib "Kernel32" _
  7.         (ByVal a As Long, ByVal b As String, ByVal c As Long) As Long
  8. ''''''''''''''''''''''''''''''''''''''''''''''''
  9. ''    DLL PROJECT ?2004 DanSoft Australia     ''
  10. ''   Your dlls MUST HAVE a DLLMain and Main   ''
  11. '' proc, otherwise it won't compile properly! ''
  12. ''''''''''''''''''''''''''''''''''''''''''''''''
  13. Function DLLMain(ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long
  14.     DLLMain = 1
  15. End Function
  16. Sub Main()
  17.     'This is a dummy, so the IDE doesn't complain
  18.     'there is no Sub Main.
  19. End Sub
  20. Function gettime()
  21. Dim cn As New ADODB.Connection
  22. Dim cmd As New ADODB.Command
  23. Dim rst As New ADODB.Recordset
  24. Dim str As String
  25. On Error GoTo ErrPro
  26. cn.ConnectionString = "driver={SQL Server};" & _
  27. "server=cnaecfuyd000072;uid=sa;pwd=123623255;database=master"
  28. cn.ConnectionTimeout = 300
  29. cn.Open
  30. cmd.ActiveConnection = cn
  31. cmd.CommandText = "select convert(char(20),getdate(),120) as sys_date"
  32. 'cmd.ActiveConnection = cn
  33. Set rst = cmd.Execute
  34. str = CStr(rst(0))
  35. gettime = str
  36. Call RtlMoveMemory(200, gettime, Len(gettime) * 2 + 1)
  37. rst.Close
  38. cn.Close
  39. Exit Function
  40. ErrPro:
  41. gettime = Format(Now(), "YYYY-mm-DD HH:mm:ss")
  42. End Function
复制代码
请教大侠这代码有什么问题, 他是一个DLL 里面的函数,我在main 函数中调试,就出错,VB 直接关掉了。

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-8-24 18:09:37 | 显示全部楼层
<p>我想,这样的DLL非VB6原生支持的,因此不能调试吧.</p>
<p>&nbsp;</p>
<p>你应该将它生成,然后使用OD一类动态调试器去调试.</p>
我就是嗷嗷叫的老马了......

76

主题

375

回帖

0

精华

铜牌会员

积分
231
 楼主| 发表于 2009-8-26 11:32:24 | 显示全部楼层
<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>马大哈</i>在2009-8-24 18:09:37的发言:</b><br/>
<p>我想,这样的DLL非VB6原生支持的,因此不能调试吧.</p>
<p>&nbsp;</p>
<p>你应该将它生成,然后使用OD一类动态调试器去调试.</p>
<p>&nbsp;</p>
<p>这个可是你写的,你自己也不知道怎么调用?</p>
<p>写出来就没意义啦。</p></div>
<p></p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-10-15 14:26:07 | 显示全部楼层
工具是我写的,但那只是方便生成这类DLL而已。

DLL本身应该实现什么功能,以及如何调试是最有效的,需要编写者自己掌握。

常用的调用法,我都已给出了示例代码;而调试技术,我只能给出一些通用的建议,因为我并不能了解别人会编写什么样的代码,不能确定地告诉一个相对最有效的手段。
我就是嗷嗷叫的老马了......

0

主题

11

回帖

0

精华

铜牌会员

积分
115
发表于 2015-4-6 18:42:26 | 显示全部楼层
参观各位大侠 讨论
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表