pb怎么调用vb.net写的dll?

jojoova 2010-01-08 09:15:53
我用vb.net的类库写了个dll,代码是这样的(套用某大侠的代码,不是我自己写的)
Public Class Class1
Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Int32) As Int32
Declare Function lClose Lib "kernel32" Alias "_lclose" (ByVal hFile As Int32) As Int32
Public Function IsFileAlreadyOpen(ByVal FileName As String) As Boolean
Dim hFile As Long
Dim lastErr As Long
hFile = -1 ' 初始化文件句柄.
lastErr = 0
hFile = lOpen(FileName, &H10)

If hFile = -1 Then ' 文件是否能正确打开并可共享
lastErr = Err.LastDllError
Else
lClose(hFile)
End If
IsFileAlreadyOpen = (hFile = -1) And (lastErr = 32)
End Function
End Class
然后用pb调用的时候出现这个提示bad runtime function reference at line xx...
是为什么啊?怎样才能正确调用该dll?
...全文
234 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pb8 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chaoleo 的回复:]
哈哈,PB调用VB的DLL,这个问题我花几天时间刚刚解决~VB写的DLL与其它DLL不一定;因为VB写的DLL文件在生成DLL文件时封装了class,所以不能用常规的方法调用;参议你写能OCX用OLE调用,保证一次能通过.
[/Quote]

呵呵,首先恭喜你~~
不过楼主的问题与你有点不一样,他应该已经解决了的,
不同语言间的交互都会有些区别,比如pb调用delphi与c的东东,在delphi与c端都需要注意的,而不只是pb注意声明就好了,
楼主的因为是调用windows内核提供的函数,直接在pb中声明就可以了,没必要再转一个弯~~
chaoleo 2010-01-18
  • 打赏
  • 举报
回复
哈哈,PB调用VB的DLL,这个问题我花几天时间刚刚解决~VB写的DLL与其它DLL不一定;因为VB写的DLL文件在生成DLL文件时封装了class,所以不能用常规的方法调用;参议你写能OCX用OLE调用,保证一次能通过.
pb8 2010-01-08
  • 打赏
  • 举报
回复
呵呵,上面的API也可以直接在PB里面声明调用的呀,
如果是pb10以后,在pbt处单击右键就可以加载.net的dll的,使用import extends...,
呵呵,
jojoova 2010-01-08
  • 打赏
  • 举报
回复
问题已解决,可以用pb自己的fileopen判断
jojoova 2010-01-08
  • 打赏
  • 举报
回复
或者有其他比较好的判断文件已打开的方法?
yiguanjun 2010-01-08
  • 打赏
  • 举报
回复
学习

680

社区成员

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

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