在DELPHI 中可以调用VB写的DLL文件吗?因为我没有原码不能改写。(200分)

  • 主题发起人 主题发起人 风清云淡
  • 开始时间 开始时间

风清云淡

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI 中可以调用VB写的DLL文件吗?因为我没有原码不能改写。
在VB中调用如下。
Declare Function Rockey Lib "RYDLL32.DLL" (ByVal fcode As Integer, ByRef handle As Integer, ByRef lp1 As Long, ByRef lp2 As Long, ByRef p1 As Integer, ByRef p2 As Integer, ByRef p3 As Integer, ByRef p4 As Integer, ByVal buffer As Any) As Integer
我改成了
implementation
function Rockey(fcode:Integer;handle:Integer;lp1:Longint;
lp2:Longint;p1:Integer;p2:Integer;
p3:Integer;p4:Integer;buffer: string):integer;stdcall;external 'RYDLL32.DLL';
并且DLL文件已经在运行环境了。
但一执行到调用的句子就死机(黑屏,报错,重启)实在不清楚是什么问题。
 
应该是你的声明有问题:
ByRef在Delphi中要声明成 var,如ByRef handle as Integer ==> var handle: Integer
As Any的我没试过,可能是要转成Pointer: ByVal buffer as Any ==> buffer: Pointer
如果不行就换成: var Buffer
 
同一楼上的。另外,C++的void类型与void * 类型转换为VB时全成了any.在Delphi中就成了
pointer.
 
VB写的DLL文件不可能是
Declare Function Rockey Lib "RYDLL32.DLL" (ByVal fcode As Integer, ByRef handle As Integer, ByRef lp1 As Long, ByRef lp2 As Long, ByRef p1 As Integer, ByRef p2 As Integer, ByRef p3 As Integer, ByRef p4 As Integer, ByVal buffer As Any) As Integer
这样调用的,VB只能写ACTIVEX DLL:)
 
RYDLL32是个COm组件吧?
 
噢,这个问题以前也困扰我。。哪位哥哥能给个转换时类型的详细参照。。。
 
后退
顶部