VB调用DELPHI写的dll出现很奇怪的问题,请高人相助啊 !!!我有个delphi座的 Dll,里面有个窗体,源码客户没有给。
在delphi里调用为
//声明--------------------------------------------------------
function RunMyDllcurv(dbuf:array of single; dlen:integer):integer;stdcall;external 'Pdllcurv' index 1;
//调用--------------------------------------------------------
procedure TForm_demo.Button4Click(Sender: TObject);//调用正常
var
curvlen:integer;
curvdata:array[0..99999] of single;
begin
   curvlen:=100000
   RunMyDllcurv(curvdata, curvlen) ;
end;//************************************************************在VB里调用为
//声明--------------------------------------------------------
Private Declare Function RunMyDllcurv Lib "Pdllcurv.dll" (dbuf As Single, ByVal dleen As Long) As Long
//调用--------------------------------------------------------
Private Sub Command1_Click()//调用不正常
Dim buff(99999) As Single  Call RunMyDllcurv(buff(1), 100000)End Sub具体表现为:
1。
当 Pdllcurv.dll 在 vb 系统目录里时, 调式时,按下 Command1 按钮
后, dil 里的窗体可以正常显示,但关闭该窗体后,会出现一个“dll 调用约定错误”的错误
2.
当 生成exe文件后 把 Pdllcurv.dll 放在exe文件所在目录里,按下 Command1 按钮
后,dil 里的窗体没有显示,却出现“读取内搓错误”消息条。

解决方案 »

  1.   

    关注!
    是否它的DLL没有开发为提供其他语言调用的形式。
      

  2.   

    Dim buff(99999) As Single
    这句之后内存都没有初始化,你直接传递第一个元素进去,当然出错了....
    还有你确定那样穿个single进去能正确地传进数组么?
    你看看这样可以不
    Private Declare Function RunMyDllcurv Lib "Pdllcurv.dll" (dbuf() As Single, ByVal dleen As Long) As LongCall RunMyDllcurv(buff, 100000)
      

  3.   

    to VirtualDesktop(吴滂:欢迎到我的Blog转转 ^_^) ( 如何初始化??Call RunMyDllcurv(buff, 100000) 不行啊