vb连续调用dll函数出错

lylkr 2011-02-10 09:28:46
如题
连续调用同一个c编写的dll函数,在第三次时出错
“Visual Basic 遇到问题需要关闭。我们对此引起的不便表示抱歉。”

错误签名
AppName: vb6.exe AppVer: 6.0.97.82 ModName: ntdll.dll
ModVer: 5.1.2600.2180 Offset: 0003426d
...全文
184 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Michael_g 2011-02-17
  • 打赏
  • 举报
回复
跟路径没关系,如果是路径问题那在第一次调用时就会出错了,不会等到第三次。这很可能是一个缓冲溢出或内存操作的错误,问题应该在dll里。
这个API 的返回值是字符串,一般API不要将字符串作返回值,因为这会涉及到内存释放问题,很容易造成错误码。
如果 mbh, s1, s2 这个三参数 除了传值之外如果还要接收值,那么相应的字符串要初始化成足够的长度.

http://www.examda.com/ncre2/VB/fudao/20070830/114546346.html
szysslszy 2011-02-17
  • 打赏
  • 举报
回复
0f123的对
of123 2011-02-17
  • 打赏
  • 举报
回复
s2 = Replace(App.Path & "\00.bmp", "\\", "\")
luodingping 2011-02-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chenjl1031 的回复:]
App.Path后面,如果有了一个"\" 是会出错的.改成:

VB code
s2 =iif(right$(App.Path,1)="\",App.Path,App.Path & "\") & "00.bmp"
[/Quote]
我也在APP.PATH 后面有"\",不过没出错,不过我是先用一个变量,(假设为K),K=APP.PATH
然后 K & "\00.bmp"
meiling01 2011-02-12
  • 打赏
  • 举报
回复
帮顶,我也遇到了同样的问题,等待楼主的结果
东方之珠 2011-02-11
  • 打赏
  • 举报
回复
App.Path后面,如果有了一个"\" 是会出错的.改成:
s2 =iif(right$(App.Path,1)="\",App.Path,App.Path & "\") & "00.bmp"
lylkr 2011-02-10
  • 打赏
  • 举报
回复
该dll用于识别图片中仪表的指针读数
lylkr 2011-02-10
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Function ReadData Lib "maindll.dll" (ByVal fs As String, ByVal apppath As String, ByVal bmpfilename As String) As String


Private Sub Command2_Click()
Dim Ret As String
Dim mbh As String
Dim s1 As String
Dim s2 As String
mbh = "C3"
s1 = App.Path
s2 = App.Path + "\00.bmp"
Text1.Text = ReadData(mbh, s1, s2) '表1 00.bmp

这时调用代码
dll是别人写的我没有源码
End Sub
dbcontrols 2011-02-10
  • 打赏
  • 举报
回复
无代码无真相,别人又无那个“c编写的dll”,又不知道你怎么调用的,又不是神仙
lylkr 2011-02-10
  • 打赏
  • 举报
回复
问题出在哪里

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧